我试图根据复选框的选中/未选中状态更改表单中每个复选框中标签的背景颜色。到目前为止,我最初更改了它,但当我取消选中时它不会变回来:
http://jsfiddle.net/7wnCL/4/ http://jsfiddle.net/7wnCL/4/
javascript:
function statecheck(layer) {
var myLayer = document.getElementById(layer);
if(myLayer.checked = true){
myLayer.style.backgroundColor = "#bff0a1";
} else {
myLayer.style.backgroundColor = "#eee";
};
}
html:
<form action="" method="get">
<label title="Alabama" id="Alabama"><input type="checkbox" value="checkbox" onchange="statecheck('Alabama')" />AL</label>
<label title="Alaska" id="Alaska"><input type="checkbox" value="checkbox" onchange="statecheck('Alaska')" />AK</label>
<label title="American Samoa" id="AmericanSamoa"><input type="checkbox" value="checkbox" onchange="statecheck('AmericanSamoa')" />AS</label>
</form>
css:
label {
margin:0px 2px 4px 2px;
padding: 1px;
background-color: #eee;
display: block;
width: 50px;
}
http://jsfiddle.net/7wnCL/20/ http://jsfiddle.net/7wnCL/20/
myLayer.checked = true
是一个任务,而不是一个条件。
if (myLayer.checked = true)
每次都被评估为
if (true)
else 部分永远不会被执行。所以将其更改为:
if (myLayer.checked === true)
另外,您应该检查输入,而不是图层,因为图层没有任何已检查的属性:
if (myLayer.childNodes[0].checked === true)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)