我有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
ste*_*e_c 25
您应该针对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;
}
}
Run Code Online (Sandbox Code Playgroud)
Pao*_*ino 17
a的value属性checkbox是你设置的:
<input type='checkbox' name='test' value='1'>
Run Code Online (Sandbox Code Playgroud)
因此,当有人将检查中,服务器接收一个名为变量test用value的1-你要检查什么是不是value它(这永远不会改变,无论是检查还是没有),但是checked复选框的状态.
所以,如果你替换这个代码:
if (arrChecks[i].value == "on")
{
arrChecks[i].checked = 1;
} else {
arrChecks[i].checked = 0;
}
Run Code Online (Sandbox Code Playgroud)
有了这个:
arrChecks[i].checked = !arrChecks[i].checked;
Run Code Online (Sandbox Code Playgroud)
它应该工作.你应该使用true而false不是0和1为此.
要切换复选框,您可以使用
element.checked = !element.checked;
Run Code Online (Sandbox Code Playgroud)
所以你可以使用
if (attribute == elementName)
{
arrChecks[i].checked = !arrChecks[i].checked;
} else {
arrChecks[i].checked = false;
}
Run Code Online (Sandbox Code Playgroud)