黑马程序员技术交流社区

标题: onclick="document.onclick=f1"与onclick="f2()"有什么区别? [打印本页]

作者: 何圣东    时间: 2012-3-20 22:30
标题: onclick="document.onclick=f1"与onclick="f2()"有什么区别?
onclick="document.onclick=f1"与onclick="f2()"有什么区别?
后面什么时候带括号,什么时候又不带括号?

作者: 莫洪刚    时间: 2012-3-21 09:11
关联事件一你可以这样理解:
关联事件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指针是关键,而不是简单的函数执行那么单纯,我希望你理解没加括号,或则加了括号的区别和作用,如果有错还请高手们多多指教






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2