因为我要判断浏览器监听的兼容性,所以写的下边这个
element["on"+type]=handler;
我的理解是,这个式子得到的是下边这样的句式
element[onclick]=function(){};
但是实际我是想要的是(我认为这样才是对的)
element.onclick=function(){}
问题:为什么他要用[]号,而不用.()来将里边的内容包住呢??这个是哪一块的知识呢??
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
JavaScript为属性访问定义了两种语法:
.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字。当属性名是通过运算得出的值而不是固定的值的时候,必须使用方括号写法。
(摘自《JavaScript权威指南》4.4节-属性访问表达式)
当事件类型(如click事件)是确定的时候,你可以直接这样注册:
element["onclick"]=handler;(题主的代码少了引号)或者element.onclick=handler;element["on"+type]=handler;不是element[onclick]=function(){};而是element['onclick']=function(){};就是element.onclick=function(){};就是你想要的歪楼。这个回答对问题没有任何作用,只是由on想到的。
对于事件监听的封装。