如何使用JavaScript检索也在JavaScript中创建的html元素

时间:2019-05-27 08:47:38

标签: javascript getelementbyid

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”

1 个答案:

答案 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>