用于检查复选框是被选中还是未选中的Javascript

IT技术 javascript
2021-03-20 09:22:04

我有一个 javascript 例程,它正在对一组复选框执行操作,但我想根据用户是选中复选框还是取消选中将单击的复选框设置为选中或取消选中的最终操作。

不幸的是,每次我检查它是被选中还是未选中时,它都会返回“on”,表明用户总是在选中该框!任何帮助将不胜感激,我还包括了 javascript。

// Uncheck all the checkboxs with the same Tax Credit
for (i=0; i<arrChecks.length; i++)
{
    var attribute = arrChecks[i].getAttribute("xid")
    if (attribute == elementName)
    {
        // if the current state is checked, unchecked and vice-versa
        if (arrChecks[i].value == "on")   // <-- This is always returning true, even if the box is being unchecked
        {
            arrChecks[i].checked = 1;
        } else {
            arrChecks[i].checked = 0;
        }

    } else {
        arrChecks[i].checked = 0;
    }
} 
6个回答

您应该针对 checkbox 元素的 checked 属性进行评估。

for (i=0; i<arrChecks.length; i++)
{
    var attribute = arrChecks[i].getAttribute("xid")
    if (attribute == elementName)
    {
        // if the current state is checked, unchecked and vice-versa
        if (arrChecks[i].checked)
        {
            arrChecks[i].checked = false;
        } else {
            arrChecks[i].checked = true;
        }

    } else {
        arrChecks[i].checked = false;
    }
}
我正在处理其他一些项目,当您使用代码 if (arrChecks[i].checked) 时,此代码运行良好
2021-05-17 09:22:04

a 的value属性checkbox是您通过以下方式设置的:

<input type='checkbox' name='test' value='1'>

因此,当有人将检查框,服务器接收到一个命名的变量testvalue1-你要检查什么是不是value它(这永远不会改变,无论是检查还是没有),但是checked复选框的状态。

因此,如果您替换此代码:

if (arrChecks[i].value == "on") 
{
    arrChecks[i].checked = 1;
} else {
    arrChecks[i].checked = 0;
}

有了这个:

arrChecks[i].checked = !arrChecks[i].checked;

它应该工作。为此,您应该使用trueandfalse而不是0and 1

所以代码会变成:“if (arrChecks[i].checked) arrChecks[i].checked = 1;”。那也不对。
2021-04-30 09:22:04
很公平。没有看那里的逻辑。固定的。
2021-05-18 09:22:04

要切换复选框,或者您可以使用

element.checked = !element.checked;

所以你可以使用

if (attribute == elementName)
{
    arrChecks[i].checked = !arrChecks[i].checked;
} else {
    arrChecks[i].checked = false;
}
function enter_comment(super_id) {
    if (!(document.getElementById(super_id).checked)) {
        alert('selected checkbox is unchecked now')
    } else {
        alert('selected checkbox is checked now');
    }
}

<input type="checkbox" name="a" id="1" value="1" onclick="enter_comment(this.value)" />

<input type="checkbox" name="b" id="2" value="2" onclick="enter_comment(this.value)" />

function CHeck(){
    var ChkBox = document.getElementById("CheckBox1");
    alert(ChkBox.Checked);
}

<asp:CheckBox ID="CheckBox1" runat="server" onclick="CHeck()" />
(-1) 应该是 ChkBox.checked 因为它区分大小写。在我意识到错误之前,我花了大约 20 分钟试图让您的示例工作!
2021-05-03 09:22:04