html按钮是用JavaScript创建的,每个按钮都有自己的ID。它们在按下时会激活相同的功能,我想知道按下了哪个按钮。我使用this.id
查看所按按钮的ID。我认为,因为我还没有在JavaScript中检索按钮(例如button = document.getElementById('button')
),所以它不起作用。我不知道如何使用脚本中创建的HTML元素来做到这一点。
var paragraph = document.getElementById('paragraph');
var cabins = [1,2,3];
for (var i = 0; i < cabins.length; i++) {
paragraph.innerHTML += "Cabin " + cabins[i] + "<br><br><button id='cabin" + cabins[i] +"' onclick='purchaseCabin()'>Purchase</button><br><br>"
}
function purchaseCabin() {
var cabinId = this.id;
console.log(cabinId);
}
<p id="paragraph"></p>
预期结果:被按下的按钮的ID被写入控制台中
实际结果:在控制台中写入了“ undefined”
答案 0 :(得分:2)
this
指的是Window
,它没有属性id
,因此得到undefined
:
将this
对象传递给函数,以便您可以在函数内部引用该对象:
var paragraph = document.getElementById('paragraph');
var cabins = [1,2,3];
for (var i = 0; i < cabins.length; i++) {
paragraph.innerHTML += "Cabin " + cabins[i] + "<br><br><button id='cabin" + cabins[i] +"' onclick='purchaseCabin(this)'>Purchase</button><br><br>"
}
function purchaseCabin(current) {
//console.log(this.constructor.name); // Window
var cabinId = current.id;
console.log(cabinId);
}
<p id="paragraph"></p>