因为我要判断浏览器监听的兼容性,所以写的下边这个
element["on"+type]=handler;
我的理解是,这个式子得到的是下边这样的句式
element[onclick]=function(){};
但是实际我是想要的是(我认为这样才是对的)
element.onclick=function(){}
问题:为什么他要用[]号,而不用.()来将里边的内容包住呢??这个是哪一块的知识呢??
因为我要判断浏览器监听的兼容性,所以写的下边这个
element["on"+type]=handler;
我的理解是,这个式子得到的是下边这样的句式
element[onclick]=function(){};
但是实际我是想要的是(我认为这样才是对的)
element.onclick=function(){}
问题:为什么他要用[]号,而不用.()来将里边的内容包住呢??这个是哪一块的知识呢??
element["on"+type]=handler;
不是 element[onclick]=function(){};
而是 element['onclick']=function(){};
就是 element.onclick=function(){};
就是你想要的
歪楼。这个回答对问题没有任何作用,只是由on想到的。
对于事件监听的封装。
var Event = {
addHandler: function (oElement, sEvent, fnHandler) {
oElement.addEventListener ? oElement.addEventListener(sEvent, fnHandler, false) : oElement.attachEvent("on" + sEvent, fnHandler)
}
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
JavaScript为属性访问定义了两种语法:
.identifier
的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字。当属性名是通过运算得出的值而不是固定的值的时候,必须使用方括号写法。
(摘自《JavaScript权威指南》4.4节-属性访问表达式)
当事件类型(如click事件)是确定的时候,你可以直接这样注册:
element["onclick"]=handler;
(题主的代码少了引号)或者element.onclick=handler;