首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ClickListener创建多个按钮并确定单击了哪个按钮?(JavaScript)

使用ClickListener创建多个按钮并确定单击了哪个按钮?(JavaScript)
EN

Stack Overflow用户
提问于 2021-01-03 11:20:29
回答 2查看 118关注 0票数 0

想想Uno卡片游戏的逻辑,例如,当我通过点击抽签按钮在玩家手上动态创建卡片时,我如何在玩家手中获得被点击的卡片?

类似于:

代码语言:javascript
复制
var btn = document.createElement("BUTTON");
btn.onclick = () => {
  alert(btnCounter);
}
btnCounter++;

但是onclick函数应该只写一次,然后为这个按钮保存。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-03 11:37:48

一种选择是依赖于事件冒泡。我们可以将事件侦听器添加到手部的容器中,然后在单击时,确保单击的元素是一个按钮。在本例中,我将我们的卡的值放在按钮的数据集中,但是您可以从目标上的任何位置获取信息。

代码语言:javascript
复制
const hand = document.querySelector("#hand");

hand.addEventListener("click", function(e) {
  if (e.target.tagName !== "BUTTON") return;
  console.log(e.target.dataset.card);
});

function drawCards(numberOfCards) {
  for (let i = 0; i < numberOfCards; i++) {
    const button = document.createElement("button");
    const card = Math.floor(Math.random() * 10);
    button.setAttribute("data-card", card);
    button.innerHTML = card;
    hand.appendChild(button);
  }
};

drawCards(5);
代码语言:javascript
复制
<div id="hand"></div>

票数 0
EN

Stack Overflow用户

发布于 2021-01-03 11:46:23

在创建按钮(及其id)的上下文中,将id绑定到o点函数中...

代码语言:javascript
复制
const ids = ['1', '2', '3'];
var parent = document.getElementById('parent')

ids.map(id => {
  let btn = document.createElement('button');
  btn.setAttribute('id', id)
  btn.innerHTML = `Button ${id}`
  parent.appendChild(btn)
  btn.onclick = event => {
    alert(id)
  }
})
代码语言:javascript
复制
<div id="parent">
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65546352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档