btn.onclick=toggle; btn.onclick=toggle();执行顺序是?

btn.onclick=toggle; btn.onclick=toggle();执行顺序是?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>全选和反选</title>

</head>

<body>

    <input type="button" value="全选">

    <script>

        // 此处填写代码

        // debugger;

        var btn=document.getElementsByTagName("input")[0];

        function toggle(){

            console.log(this);

            if(this.value=="全选"){

                this.value="反选";

               console.log("hhh");

            }else{

                this.value="全选";

                console.log("111");

            }

        }

        btn.onclick=toggle;

        btn.onclick=toggle();//后面的代码会覆盖前面的吗?那如果换一下顺序,为什么前面的还是可以执行?


        

        

    </script>

</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好同学,很抱歉老师在回复时,覆盖问题没有编辑上。代码是顺序执行,onclick只能绑定一个事件,所以执行到后面的 btn.onclick=toggle()会覆盖前面的btn.onclick=toggle;  当你点击按钮时,事件toggle()已经自动执行所以点击没有反应。

而btn.onclick=toggle()在前面的时候,因为它会自动执行,所以toggle执行了一次,然后继续执行后面的btn.onclick=toggle;,就把前面的覆盖了,所以当点击时,也是可以的执行toggle的。

因为老师的疏忽,给同学带来的不便请同学谅解,以后老师也会更加细心的为同学们进行答疑。为大家带来更好的体验。

祝学习愉快 ,望采纳。

好帮手慕夭夭 2019-04-15 14:45:47

你好同学,代码一般是顺序执行的,但是事件的话需要点击绑定事件的元素才会执行。在代码中toggle()表示调用函数,会自动执行函数哦,所以如下两行代码即使位置较换,也是一个自动执行,一个点击按钮才会执行,效果都是一样的。

http://img1.sycdn.imooc.com//climg/5cb428660001179d09290165.jpg

祝学习愉快 ,望采纳。

  • 提问者 芥子1204 #1
    那为什么把btn.onclick=toggle();放在下面的时候 点击按钮时 什么都没有执行呢?
    2019-04-15 15:44:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师