今天写代码的时候遇到了一个问题,是个反选按钮,直接上代码
`
<input type="checkbox" name="items" value="足球"/>足球
<input type="checkbox" name="items" value="篮球"/>篮球
<input type="checkbox" name="items" value="游泳"/>游泳
<input type="checkbox" name="items" value="唱歌"/>唱歌
<input type="button" id="CheckedRev" value="反 选"/>
$("#CheckedRev").click(function(){
var chk = $("input[name=items]");
for (var i =0;i<chk.length;i++){
var ischeck = $(chk[i]).attr("checked");
alert(ischeck); //返回undifine
$(chk[i]).attr("checked",!ischeck);
}
});
代码其实很简单,表面上看没什么错误,第一次结果还是正确的,但是结果如果一直点击这个按钮就会出错,后来才知道ischeck 那返回的并不是true or false
而是undifine 。
后面也参考了他人博客,了解到 固有属性用prop,不然会得不到正确的结果,所谓的固有属性就是指的id name之类,针对于checkbox,checked属性就算是其固有属性。
正确代码:
$("#CheckedRev").click(function(){
var chk = $("input[name=items]");
for (var i =0;i<chk.length;i++){
var ischeck = $(chk[i]).prop("checked");
$(chk[i]).prop("checked",!ischeck);
}
});