checked js 获取值_js基础属性值checked大坑

简单聊聊今天遇到的js中属性值

写一个checkbox的全选,取消,反选,全选和取消都是判断checked属性之后利setAttribute和removeAttribute去做,可这样的结果就是执行反选后就无法再去执行全选或者取消。纠结了好久找不到解决方法,还好身边有大神,简单看了看指出了鄙人的错误;如果用remove或者set去修改了原有属性,那么如图这种情况就无法执行了,因为再反选的过程中已经对属性checked进行了修改或移除

这就直接导致你再去执行set或者时系统已经找不到checked值,所以bug就来了,解决方法其实也很简单的,不执行remove或者set,而是直接用true or false决定是否选中,完美避开问题,实际开发中这种问题会很常见,所以大多数人会直接选用布尔类型去做判断规避出现这种情况

源码如下

Title

序 号用 户密 码

111222333

function CheckAll() {

//根据id找到对应的tbody标签

var tb = document.getElementById('i1');

//找到tbody标签下的子类tr,再将其赋值给trs

var trs = tb.children;

//对trs内的每个标签进行循环,找到相应的td标签

for (var i = 0; i < trs.length; i++) {

//循环体中拿到对应的td标签并对其内容进行检索

var current_tr = trs[i];

//利用两次firstElementChild取得标签input

var ck = current_tr.firstElementChild.firstElementChild;

ck.checked = true;

// ck.setAttribute('checked', 'checked');

function CancleAll() {

var tb = document.getElementById('i1');

var trs = tb.children;

//在trs内循环

for (var i = 0; i < trs.length; i++) {

var current_tr = trs[i];

var ck = current_tr.firstElementChild.firstElementChild;

ck.checked = false;

// ck.removeAttribute('checked');

// if (0) {

// alert(2)

// ck.checked = true;

// javascript:void (0);

// } else {

// ck.checked = false;

// ck.removeAttribute('checked');

//

// }

}

}

function ReverseAll() {

var tb = document.getElementById('i1');

var trs = tb.children;

for (var i = 0; i < trs.length; i++) {

var current_tr = trs[i];

var ck = current_tr.firstElementChild.firstElementChild;

if (ck.checked) {

ck.checked = false;

// ck.removeAttribute("checked");

} else {

ck.checked = true;

// ck.setAttribute('checked', 'checked');

}

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值