<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>
想问一下大家,我 这样写一样可以实现,为什么要多加一个变量并且用句柄?用句柄有什么好处,说实话, 我感觉写句柄的格式怪怪的
element.addEventListener是用来兼容非IE浏览器的,采用的是DOM2级事件处理方式
element.attachEvent是来兼容IE浏览器的
element["on"+type]=handler是在前两种都不兼容的情况下采用DOM0级事件处理(在现在浏览器中一般不会执行这里的代码)
我又回来了。。。。建议大家看完慕课网教程之后看看书《javascript高级程序设计》。。。。在javascript语言中,一切皆对象,对象有属性和方法,这个句柄就是一个指向这个函数的指针。。添加的这个变量就是一个用字面量表示的对象。。。你用函数实现也可以,但是这个函数作用域是全局的。就像在C语言里,你不论变量是什么类型(全局的还是函数里的),都设置为全局变量。那肯定是不合适的。所以你要把这个函数封装到某个对象里,调用的时候,对象.属性(或者方法)就可以了。
你找到满意的答案了吗?
同求大神解答一下。。
我也是第一次知道有句柄,这样封装和引用java库函数方法一样了,很好理解和使用
兼容各大浏览器, element.attachEvent('on'+type,handler)是IE的; IE不支持element.addEventListener(type,handler,false)