当两个数组的等长长度大于零时,我正在尝试执行一个函数。
我的程序将“字母”类分配给短语div中的每个列表项。如果按钮按下与该div中的字母匹配,则该字母被分配为“显示”类,该类将其显示给用户。
我不明白为什么我的获胜条件没有得到满足。我比较两个索引的长度的方式有问题吗?
我在这里包括了我的代码笔:https://codepen.io/Azo3307/pen/vPjwxr
我的checkWin()函数在第100行,然后在每次按下按钮后在第143行调用它。
// Check win condition
function checkWin() {
let showClass = document.getElementsByClassName('show');
let lettersClass = document.getElementsByClassName('letters');
if (showClass.length == lettersClass.length && showClass.length > 0 && lettersClass.length > 0) {
console.log('you win');
addElement('win', `You Win!`, `"${phraseArray}" is correct! `);
} else if (missed == 5) {
console.log('you lose');
addElement('lose', 'Game Over!', 'Better luck next time!');
}
}
非常感谢您的帮助。谢谢。
答案 0 :(得分:2)
这是因为您要的是document.getElementsByClassName('letters')
而不是letter
:
<li class="letter show">t</li>
第二点,如果showClass.length == lettersClass.length
和showClass.length > 0
,则不需要测试lettersClass.length > 0
;)
function checkWin() {
let showClass = document.getElementsByClassName('show');
let lettersClass = document.getElementsByClassName('letter');
if (showClass.length == lettersClass.length && showClass.length > 0) {
console.log('you win');
addElement('win', `You Win!`, `"${phraseArray}" is correct! `);
} else if (missed == 5) {
console.log('you lose');
addElement('lose', 'Game Over!', 'Better luck next time!');
}
}
最后一个,在尝试任何操作之前,只需选择所有块就很容易知道文本;)您应该display:none
而不是将其透明。
答案 1 :(得分:0)
第102行:
let lettersClass = document.getElementsByClassName('letters');
重命名为
let lettersClass = document.getElementsByClassName('letter');
看起来像是小错字。顺便说一句,顺便说一下代码。