为了账号安全,请及时绑定邮箱和手机立即绑定

function addHand(element,type,handler) 一样可以实现,为什么要多加一个变量并且用句柄?用句柄有什么好处

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>无标题文档</title>

<script>

function showmes()

{alert("none");}

window.onload=function(){ 

var btn=document.getElementById("btn");

function addHand(element,type,handler)

   {

   if(element.addEventListener) 

      { element.addEventListener(type,handler,false);}

else if(element.attachEvent) 

 { element.attachEvent('on'+type,handler);}

else 

 { element['on'+type]=handler;}

    }


addHand(btn,'click',showmes);

}

</script>

</head>


<body>

<input type="button" value="按钮" id="btn">


</body>

</html>

想问一下大家,我 这样写一样可以实现,为什么要多加一个变量并且用句柄?用句柄有什么好处,说实话, 我感觉写句柄的格式怪怪的

正在回答

6 回答

element.addEventListener是用来兼容非IE浏览器的,采用的是DOM2级事件处理方式  

element.attachEvent是来兼容IE浏览器的  

element["on"+type]=handler是在前两种都不兼容的情况下采用DOM0级事件处理(在现在浏览器中一般不会执行这里的代码)

0 回复 有任何疑惑可以回复我~

我又回来了。。。。建议大家看完慕课网教程之后看看书《javascript高级程序设计》。。。。在javascript语言中,一切皆对象,对象有属性和方法,这个句柄就是一个指向这个函数的指针。。添加的这个变量就是一个用字面量表示的对象。。。你用函数实现也可以,但是这个函数作用域是全局的。就像在C语言里,你不论变量是什么类型(全局的还是函数里的),都设置为全局变量。那肯定是不合适的。所以你要把这个函数封装到某个对象里,调用的时候,对象.属性(或者方法)就可以了。

0 回复 有任何疑惑可以回复我~
#1

无敌小哥儿

如果看不懂。。。快去看看书啊。。。当我看了几天书,我感觉我这一年在慕课网学的都白学了(当然,没这么夸张)!!
2017-03-24 回复 有任何疑惑可以回复我~

你找到满意的答案了吗?

0 回复 有任何疑惑可以回复我~

同求大神解答一下。。

0 回复 有任何疑惑可以回复我~

我也是第一次知道有句柄,这样封装和引用java库函数方法一样了,很好理解和使用

0 回复 有任何疑惑可以回复我~

兼容各大浏览器, element.attachEvent('on'+type,handler)是IE的; IE不支持element.addEventListener(type,handler,false)

1 回复 有任何疑惑可以回复我~
#1

wshyzx

你这说了等于没说
2017-03-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

function addHand(element,type,handler) 一样可以实现,为什么要多加一个变量并且用句柄?用句柄有什么好处

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信