繁体   English   中英

如何检测按下了哪个按钮

[英]How to detect which button was pressed

我想知道在许多按钮的列表中按下了哪个按钮。 例如,如果第二个按钮被按下,那么代码会检测到第二个按钮被按下并返回类似[1]的内容。 但是,我不知道该怎么做。 当我搜索时,涉及 jQuery,但我没有使用 jQuery。 代码如下:

 var table = document.getElementById("Table"); function CreateRow() { var CoreButton = document.createElement("Button"); var ButtonText = document.createTextNode("Add"); CoreButton.appendChild(ButtonText); document.body.appendChild(CoreButton); var NewRow = table.insertRow(-1); var NewName = NewRow.insertCell(-1); var AddRow = NewRow.insertCell(-1); AddRow.id = "AddRow"; AddRow.className = "AddRow"; AddRow.appendChild(CoreButton); }
 <html> <table id = "Table"> <button onclick="CreateRow()">Add Button</button> </table>

我尝试使用 EventListner,将 EventListner 添加到创建的每个按钮中,但这并没有区分各个按钮。 请注意,每个按钮都有一个AddRow的 id 和一个 AddRow 的AddRow
如果有人可以帮忙,谢谢!

您可以从 1 开始向每个按钮添加类似数据属性的内容,并像这样设置 eventListener

这将在文档上设置一个 eventListener 并在点击目标与.AddRow class 的元素不匹配时返回。 如果匹配访问每个 e.target.dataset 的数据属性。

document.addEventListener('click', e => {
    if(!e.target.matches('.AddRow')) return;
    console.log(e.target.dataset.id);
});

按钮示例

<button class="AddRow" data-id="1"></button>

 var table = document.getElementById("Table"); function CreateRow(obj) { var row = parseInt(obj.getAttribute('data-row')); var CoreButton = document.createElement("Button"); CoreButton.classList.add('btn'); CoreButton.setAttribute('data-row', row+1); var ButtonText = document.createTextNode("Add"); CoreButton.appendChild(ButtonText); CoreButton.addEventListener('click',function(){CreateRow(CoreButton)}, false); document.body.appendChild(CoreButton); var NewRow = table.insertRow(-1); var NewName = NewRow.insertCell(-1); var AddRow = NewRow.insertCell(-1); AddRow.id = "AddRow"; AddRow.className = "AddRow"; }
 <table id = "Table"> <button data-row='1' onclick="CreateRow(this)">Add Button</button> </table>

我会使用上面的代码,在行变量中我会得到行号,然后使用我自己的逻辑来操作进一步的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM