javascript addEventListener don';不添加事件
我有如下代码。我创建了名为“Car”的Javascript类,并在构造函数中将事件添加到html“”标记中。但这件事不会发生 谁能帮帮我吗 谢谢, Ajavascript addEventListener don';不添加事件,javascript,html,class,oop,events,Javascript,Html,Class,Oop,Events,我有如下代码。我创建了名为“Car”的Javascript类,并在构造函数中将事件添加到html“”标记中。但这件事不会发生 谁能帮帮我吗 谢谢, A 功能车(型号、品牌){ this.model=模型; 这个品牌=品牌; document.getElementById('button').addEventListener('onclick',this.info); } //方法 Car.prototype.info=函数(){ 警报(“它是”+此.model); }; //定义龋齿 var车
功能车(型号、品牌){
this.model=模型;
这个品牌=品牌;
document.getElementById('button').addEventListener('onclick',this.info);
}
//方法
Car.prototype.info=函数(){
警报(“它是”+此.model);
};
//定义龋齿
var车=新车(“RX7”、“马自达”);
//html中的Invoke方法
//car.info();
//第二条路
window.onload=函数(){
var车=新车(“RX7”、“马自达”);
};代码>
单击我
事件应该是单击
而不是单击
要绑定上下文,请在事件处理程序函数引用上使用bind(this)
功能车(型号、品牌){
this.model=模型;
这个品牌=品牌;
document.getElementById('button').addEventListener('click',this.info.bind(this));
// ^^^^^^^ ^^^^^^^^^^
}
//方法
Car.prototype.info=函数(){
警报(“它是”+此.model);
};
//定义龋齿
var车=新车(“RX7”、“马自达”);
//html中的Invoke方法
//car.info();
//第二条路
window.onload=函数(){
var车=新车(“RX7”、“马自达”);
};代码>
点击我
@Tushar
非常感谢你。如果没有你的帮助,我不会这么做:-)
对于希望将所有内容都“更深入”到类中的人,我在@Tushar代码中准备了一些更改
但我不知道它是否在任何编程标准中都是一致的
功能车(型号、品牌){
this.model=模型;
这个品牌=品牌;
document.getElementById('button').addEventListener('click',this.info.bind(this));
}
//方法
Car.prototype.info=函数(){
警报(“它是”+此.model);
};
document.addEventListener('DOMContentLoaded',function(){
var车=新车(“RX7”、“马自达”);
});代码>
点击
非常感谢:-)回答得好。我想把它作为“通用”搜索过滤器来做,它不需要太多的地方来添加代码。这就是我在构造函数中添加事件的原因。在第一个示例中,方法在一次clisk之后调用2次。原因是什么?第二个示例运行良好。@arrowman在第一个示例中,Car
构造函数被调用两次,因此事件在同一元素上绑定两次,导致处理程序在单击时运行两次。我建议使用第二个例子。