您的位置:首页 > Web前端 > JavaScript

JS笔记-关于在DOM0级别中设置事件处理对象的思考

2015-05-17 23:22 417 查看
在JavaScript指定事件处理程序的方式中,有三层,分别是DOM 0 级, DOM 1 级, DOM 2 级。

DOM 0 级是最传统的形式,主要为直接给指定元素的某个事件直接指定,

ex:

<span style="font-family:Microsoft YaHei;font-size:14px;color:#ff6600;">div.onclick = function(){aliert("hello world!")};</span>


在上述过程中,div元素的click事件被赋予了一个匿名函数。

但,请注意:

我们并不能通过DOM 0 级的传统方法将
带有指定参数的方法传递给指定的事件

请看下面代码:
<pre name="code" class="html"><span style="font-family:Microsoft YaHei;font-size:14px;color:#ff6600;">function say(s) {
alert(s);
}
var s1 = "hello";
div.onclick = say(s);</span>




执行这段代码,我们会发现,在还没点击div元素的时候,say(s)就已经被执行了!
经过思考,我认为是一下原因:div.onclick = say(s); 这行代码,表达的意思并非是把say(s)这个执行方法传递给div的click事件,而是将其执行的结果传递给click事件。也就是说,这行代码是将say(s)的执行结果传递给了事件,而非方法本身。于是乎,每一次刷新,都会执行一个say(s)以得到执行的结果。

因此,我尝试将say(s)两边加上双引号,目的是达到将字符串赋给click事件。
代码如下:
<span style="font-family:Microsoft YaHei;font-size:14px;color:#ff6600;">function say(s) {
alert(s);
}
var s1 = "hello";
div.onclick = "say(s)";
</span>


执行发现,当点击div元素时,并不能执行say(s)中的方法。

综上,得出结论:通过DOm 0 级传递带参数的实名方法给指定事件,只能通过在标签上设置的方法。如:
<strong><span style="font-family:Microsoft YaHei;font-size:14px;color:#ff6600;"><div onclick="say(s)">hello</div></span></strong>


仅此,才能将带参数的实名方法(如say(s))传递给指定事件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: