关于form表单中的input标签属性名与onclick的函数名相同问题

问题:

js部分

    function checkAll() {
                var checkAllEle = document.getElementById("checkAll");
                var eles = document.getElementsByName("checkOne");
                if (checkAllEle.checked == true) {
                    for (var i = 0; i < eles.length; i++) {
                        eles[i].checked = true;
                    }
                } else {
                    for (var i = 0; i < eles.length; i++) {
                        eles[i].checked = false;
                    }
                }
            }

        </script>

form表单部分

<form id="" action="#">

全选<input type="checkbox" id="checkAll" οnclick="checkAll()"/>

<input type="checkbox" name="checkOne"/>

<input type="checkbox" name="checkOne"/>

<input type="checkbox" name="checkOne"/>

</form>

原因:Form中的input属性的值已经作为当前form的属性了,由于作用域问题,onclick访问的是form的checkAll属性而不是外部的函数。(checkAll()会默认传递一个隐性参数this,此时的this代表的是form表单对象,会优先调用表单的属性,即checkAll,而不是调用window对象的checkAll()方法)

解决方法:1、修改id名不要与函数名相同;2、οnclick="checkAll()"改为οnclick="window.checkAll()"表明是window对象的check属性

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值