慕课网2-16编程题问题

题目是:使用通过DOM获取HTML元素的方式绑定事件
gif图如下:
image


<body>
    <input type="button" value="全选">
    <script type="text/javascript">
        //补充代码
        var btn = document.getElementsByTagName("input")[0];

        function zhengxuan() {
            btn.value = "全选"
        }

        function fanxuan() {
            btn.value = "反选"
        }
        if (btn.value == "全选") {
            btn.onclick = fanxuan;
        } else {
            btn.onclick = zhengxuan;
        }
    </script>
</body>

运行之后发现点击全选可以变成反选,再点击反选就没有变化了。
应该是这样:


<body>
    <input type="button" value="全选">
    <script type="text/javascript">
        //补充代码
        var btn = document.getElementsByTagName("input")[0];
        btn.onclick = myclick;

        function myclick() {
            if (btn.value == "全选") {
                btn.value = "反选";
            } else {
                btn.value = "全选";
            }
        }
    </script>
</body>

这时为什么呢?在错误的代码中,程序按顺序进行,执行完

if (btn.value == "全选") {
            btn.onclick = fanxuan;

之后,整个程序就完事了不会去执行else的条件。所以是要当onlick
时触发函数,然后函数里再来判断执行条件。

==能犯这种错,我也是弱智……==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值