A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

onclick="document.onclick=f1"与onclick="f2()"有什么区别?
后面什么时候带括号,什么时候又不带括号?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
关联事件一你可以这样理解:
关联事件1的单击事件所执行的函数为f1(注意:这个时候this指针起作用了,指向了该对象相关联的节点document,因为是document对象来引发该函数的)

关联事件二你可以这样理解:
关联事件二的单击事件就是去执行f2函数(注意:这个时候this指针不起作用了,并没有指向该对象,而是指向的window对象)

   <script type="text/javascript">
        function f1() {
            alert('关联事件一' + this);//指向了document对象而不是input,也不是window
        }
        function f2() {
            alert('关联事件二'+this);//指向了window对象
        }
    </script>
</head>
<body>
<input type="button" onclick="document.onclick=f1" value="关联事件一" />

<input type="button" onclick="f2()" value="关联事件二" />



如果要让两个按钮都指向自己本身那么只有将this保存起来,将参数传递过去,就获得该引发事件对象的本身如:

   <script type="text/javascript">
        function f1(o) {
            alert('关联事件一' + o);//(注意:)o指向了input,但是这个函数中的this还是指向了window对象而不是document对象
        }
        function f2(o) {
            alert('关联事件二'+o);//o指向了input,但是这个函数中的this还是指向了window对象
        }
    </script>
</head>
<body>


<input type="button" onclick="document.onclick=f1(this)" value="关联事件一" />

<input type="button" onclick="f2(this)" value="关联事件二" />

我觉的最主要的还是理解this指针是关键,而不是简单的函数执行那么单纯,我希望你理解没加括号,或则加了括号的区别和作用,如果有错还请高手们多多指教

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马