Javascript 如何为addEventListener创建shortand
我想为addEventListener创建一个shortand,我正在尝试的代码是:Javascript 如何为addEventListener创建shortand,javascript,Javascript,我想为addEventListener创建一个shortand,我正在尝试的代码是: var dom = { id: function(elementId) { return document.getElementById(elementId); } }; dom.id.on = function(event, options) { var id = id.elementId; return id.addEventListener(event, function() {
var dom = {
id: function(elementId) {
return document.getElementById(elementId);
}
};
dom.id.on = function(event, options) {
var id = id.elementId;
return id.addEventListener(event, function() {
options;
}
}
当我这样使用它时:
dom.id('paragraph').on('click', dom.id('paragraph').innerText = 'clicked');
它会立即将其innerText更改为clicked,而我甚至没有单击它。将您的dom.id(“段落”)包装起来。innerText='clicked'
在函数中:
dom.id('paragraph').on('click', () => {
dom.id('paragraph').innerText = 'clicked';
}, options);
在
id
属性中,不要返回本机元素,而是返回包含on
方法的元素周围的包装器对象
var-dom={
id:函数(elementId){
const elm=document.getElementById(elementId);
返回Object.create(elm{
关于:{
值(事件、fn、选项){
elm.addEventListener(事件、fn、选项);
}
}
});
}
};
dom.id('foo').on('click',function(){this.textContent='done';})代码>
单击
您希望看到什么选项代码>要做什么?您不能传递表达式本身。你必须传递函数,为什么不直接使用jquery呢?示例:$('p')。在('click',function(p){p.innerText='clicked'}
上,您基本上是在重新开发jquery,选项如何;
?很抱歉错过了这一点。请参见编辑。不,这不是我的意思。选项
不是要添加的第三个参数。这个问题用id.addEventListener定义了上的(事件,函数(){options;}
,但是选项;
什么都不做。但是还有更多的问题;在某些性能的回答中已经考虑了所有问题。你能举一个选项的例子吗?
?内部文本不会立即更改,相反,它甚至不会更改,我没有检查控制台。如果不工作,它会创建一个类型错误:TypeError:null不是对象(正在计算“elm.addEventListener”)听起来您在运行脚本之前并没有等待元素存在于DOM中。请为您的脚本添加defer
标记,或将其包装在DOMContentLoaded中,或将其移动到
的底部。噢,谢谢!它现在工作得很好!只有一个问题,它无法更改te innerText,因为DOM.id返回的是onnction.No,dom.id
返回封装在对象中的底层元素,因此您可以对返回的内容使用.on
,也可以对返回的内容使用本机dom方法。.on('click',()=>dom.id('foo')。textContent='foo')