Javascript 如何为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() {

我想为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() {
  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')