javascript - 如何使用 JavaScript 检索同样在 JavaScript 中创建的 html 元素
问题描述
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”
解决方案
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>
推荐阅读
- php - 从 WooCommerce 订单中获取受保护的自定义订单商品元数据数组
- elasticsearch - 如何在弹性搜索中过滤时间频率?
- swift - 将 deploymentTarget 添加到 XcodeGen 中的小部件
- python - Python中的分组直方图
- r - 如何下标和上标我的标签?我似乎无法让它适用于 ggdensity 图
- opengl - glGetUniformLocation 为 GLSL 中的结构数组返回 -1
- javascript - 使用 lodash(或 vanilla javascript)对对象数组进行排序和过滤
- javascript - 运行 npm init 时触发错误
- c# - 嵌套类的二进制格式化程序自定义绑定
- elasticsearch - 以有效的方式扫描和查找 Elasticsearch 索引中的敏感数据