javascript - 从按下的 DOM 创建的按钮中收集数据
问题描述
所以我试图在 JS 中创建一种甲板创建器,我有原型,但我想让它更加模块化。所以我做了一个 else 循环来创建 DOM 按钮。我遇到的问题是我似乎无法弄清楚如何从我按下的特定按钮中获取 id/任何数字。
var cardName = ["Card 1", "Card 2", "Card 3", "Card 4", "Card 5", "Card 6"]
var Card;
var isInDeck = ["false", "false", "false", "false", "false"];
var Deck = [];
for (var i = 0; i < cardName.length; i++) {
var button = document.createElement("button");
button.innerHTML = cardName[i];
button.classList = "Button";
button.setAttribute('id', cardName[i]);
document.getElementById("buttonPlace").appendChild(button);
}
编辑,我已经尝试添加
button.onClick = function () {Card = i;}
在for循环之后,它没有工作,
解决方案
您可以向按钮添加事件监听器。有了它,您可以获得按钮当前保存的所有数据
for (var i = 0; i < cardName.length; i++) {
var button = document.createElement("button");
... // your button setup
button.addEventListener('click', function() {
console.log(this); // this is your button element
console.log(this.id); // this is the ID you assigned with "setAttribute"
});
document.getElementById("buttonPlace").appendChild(button);
}
这样您就可以访问事先分配给按钮的任何数据。在回调函数中,click
您可以对您的数据做进一步的处理。
如果您不想在循环中包含匿名函数,则可以将其分开,如下所示:
function myFunction() {
console.log(this); // this is your button element
console.log(this.id); // this is the ID you assigned with "setAttribute"
}
for (var i = 0; i < cardName.length; i++) {
var button = document.createElement("button");
... // your button setup
button.addEventListener('click', myFunction);
document.getElementById("buttonPlace").appendChild(button);
}
推荐阅读
- r - 快捷键控制输入在 R 脚本中不起作用
- c# - Parallel.ForEach 结束了味道,但它不应该这样做
- r - 按类别缩放数据框中的值
- airflow - 气流 DAG 计划延迟一天,但手动触发器不是
- cassandra - 获取“启动 DynamicEnvironmentComponent 时出错。” 在盯着 OpsCenter 6.5 代理.DSE 6.0.1
- java - Spring加载一个只有空成员变量的配置类
- c# - c#中的类型类变量
- javascript - HandsOnTable 中的 afterCommentChange 挂钩
- android - 如何在我的 Oreo 应用程序中运行像 dumpsys 这样的 adb shell 命令?
- javascript - 角度测试的导入