gpt4 book ai didi

JavaScript - 创建超过 1 个对象时,类事件内部出现 "this"问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:26 25 4
gpt4 key购买 nike

我是新来的,我正在创建一个新程序,但我真的陷入了这个问题。

我创建了一个动态创建 DOM 元素并设置事件的类。问题是“this”引用不能正常工作。

当我只创建一个对象时它工作正常,但如果我创建更多所有对象总是从最后一个获取引用。

两个对象都应通过单击显示自己的名称。

谁能帮我理解一下?

obj = function(name, box){
this.name = name;
this.inside = box;
}

obj.prototype = {

start: function() {
document.getElementById(this.inside).innerHTML = "<div ID='" + this.name +"_div'>Click me "+ this.name +"<div>";
},

addClickevent: function(){
that = this;
document.getElementById(this.name +"_div").addEventListener("click", function(e){
alert(that.name);
});
}
}


x1 = new obj('a','div1');
x1.start();
x1.addClickevent();

x2 = new obj('b','div2');
x2.start();
x2.addClickevent();
<div id="div1">

</div>

<div id="div2">

</div>

最佳答案

你确定你需要全局变量that吗?看起来您在 addClickevent 的第一行中错过了 var/let。只需将 that=this 替换为 let that=this

关于JavaScript - 创建超过 1 个对象时,类事件内部出现 "this"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com