gpt4 book ai didi

javascript - 比较数组元素和 style.fontFamily

转载 作者:行者123 更新时间:2023-11-28 03:49:46 26 4
gpt4 key购买 nike

我正在开发一个文本字体游戏,用户可以猜测屏幕上显示的字体,但是当我尝试比较单击的文本的 style.familyFont 和相应的数组元素字体时,出现了问题。

经过一些测试,似乎只有当 style.familyFont 包含包含空格的字体时,比较 style.familyFont === 相应的数组元素时,控制台才会打印出 false 。显示比较的控制台示例:

新 express ==“新 express ” false

Times New Roman == "Times New Roman"false

Arial == Arial true

Calibri == Calibri true

Papyrus == Papyrus true

塔霍马==塔霍马真

从控制台来看,当代码赋值pickedOption = this.style.fontFamily时,pickOption会获取包含空格的字体的字符引号,因此比较结果为false。

有什么办法可以解决这个问题吗?

var fonts = ["Arial", "Calibri", "Tahoma", "Papyrus", "Times New Roman", "Courier New"];
var options = document.querySelectorAll(".option");
var winningFont = generateWinningFont();
var fontDisplay = document.getElementById("fontDisplay");
var reset = document.getElementById("reset");
var message = document.getElementById("message");
fontDisplay.textContent = "Fargo";
fontDisplay.style.fontFamily = fonts[winningFont];
console.log(fonts[winningFont]);
console.log(winningFont);
setupOptions();

function generateWinningFont()
{
return Math.floor(Math.random() * fonts.length);
}

reset.addEventListener("click", function()
{
winningFont = generateWinningFont();
fontDisplay.textContent = "Fargo";
fontDisplay.style.fontFamily = fonts[winningFont];
setupOptions();
});

function setupOptions()
{
for(var i = 0; i < options.length; i++)
{
options[i].style.fontFamily = fonts[i];
options[i].textContent = fonts[i];
options[i].addEventListener("click", function(){
var pickedOption = this.style.fontFamily;
console.log(pickedOption);
console.log(pickedOption == fonts[winningFont]);
if(pickedOption == fonts[winningFont])
{
message.textContent = "Correct!";
}
else
{
message.textContent = "Try Again!";
}
});
}
}
<!DOCTYPE html>
<html>
<head>
<title>Text Font Game</title>
</head>
<body>
<h1>The Great
<br>
<span id="fontDisplay"></span>
<br>
Text Font Game
</h1>

<div id="stripe">
<button id="reset">New Font</button>
<span id="message"></span>
<button class="mode">Easy</button>
<button class="mode selected">Hard</button>
</div>

<div id="container">
<div class="option"></div>
<div class="option"></div>
<div class="option"></div>
<div class="option"></div>
<div class="option"></div>
<div class="option"></div>
</div>

<script type="text/javascript" src="textGame.js"></script>
</body>
</html>

最佳答案

没有测试您的代码,但通过查看它,我发现这里可能存在问题。

  1. 您正在使用 element.style.fontFamily 来获取 js 未应用的样式,因此我 100% 确定得到空字符串
  2. 您使用“==”而不是“===” - 这样您就可以同时检查值和值类型

关于第一个问题。您应该使用:

window.getComputedStyle(element, null).getPropertyValue('fontFamily')

通过这种方式,您实际上获得了 css 应用的样式。或者您仍然可以使用 .style.fontFamily 但随后您必须通过 JS 的内联样式设置字体系列,这是相同的。

文档 --> https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle

关于javascript - 比较数组元素和 style.fontFamily,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com