Javascript执行一个函数的两个数组中的索引数是否相等?

时间:2019-03-17 15:38:37

标签: javascript arrays

当两个数组的等长长度大于零时,我正在尝试执行一个函数。

我的程序将“字母”类分配给短语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!');
    }
}

非常感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

这是因为您要的是document.getElementsByClassName('letters')而不是letter

<li class="letter show">t</li>

第二点,如果showClass.length == lettersClass.lengthshowClass.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');

看起来像是小错字。顺便说一句,顺便说一下代码。