首页 > 解决方案 > 如何检查从数组创建的复选框是否设置为 TRUE

问题描述

我开始学习一点 JavaScript。我正在尝试创建,比如说,某种小游戏。

我有一个n * n matrix由复选框组成的矩阵。如果某组 CHECKBOXES 设置为TRUE,则​​输出任何内容(未强定义)。

我的问题是,当我将哪些复选框设置为 true 时,什么也没有发生。

这是我为矩阵创建“起点”的部分代码:

for (var i = 0; i < matrix * matrix; i++)
{
    values[i] = "values" + i;
}

现在这是我为该数组中的每个元素赋予复选框类型的部分:

for (var i = 0; i < matrix * matrix; i++)
{
    var checkbox = "<input type = 'checkbox' value = '" + values[i].checked + "' />";
    document.write(checkbox + values[i]);

    if (i % 2 != 0)
    {
        document.write("<br>");
    }
}

我知道这不适用于大于 2 的矩阵,但我想先感受一下较小的输入,然后逐步提高。

最后,这是我检查某些框是否设置为 true 的代码的一部分:

if (values[1] == true && values[3] == true)
{
    document.write("You got it!"); // This doesn't get outputted :(
}

这是完整的代码: https ://pastebin.com/30Neb3zJ

我对 JS 真的很陌生,任何类型的反馈/信息都将不胜感激。

标签: javascript

解决方案


您的代码有几个问题:

  • 矩阵中的所有值都values看起来像字符串,例如values0,values1等。当您测试时if (values[1] == true && values[3] == true),您正在测试字符串值(例如values1)是否等于布尔值true

  • 您正在测试一个永远不会改变的数组的值。我认为您想测试实际复选框的内容。为此,您需要检索这些 DOM 元素并测试它们的.checked属性是否为true

  • 您在页面加载时立即测试这些值,而不是在用户选中某些复选框之后。您需要getAnswer()在用户选中某些框后调用,或者可能在他们每次选中某个框时调用。

因此,要测试复选框,并在用户完成检查后执行此操作,您需要为所有复选框添加一个事件侦听器(或添加到某种“提交”按钮,具体取决于您想要触发测试的内容) .


推荐阅读