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

在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 οnclick="say(s)">hello</div></span></strong>

仅此,才能将带参数的实名方法(如say(s))传递给指定事件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值