javascript - 在存在多个类的情况下单击时获取标签的数据键

标签 javascript onclick alert

我想在点击时获取div的innerHTML 其中所有类名称都是相同的。

它适用于 A 文本,但在单击 S 或 D 时不起作用。

<div class="keys">
     <div data-key="65" class="key">
      <kbd>A</kbd>
      <span class="sound">clap</span>
    </div>

    <div data-key="83" class="key">
      <kbd>S</kbd>
      <span class="sound">hihat</span>
    </div>

    <div data-key="68" class="key">
      <kbd>D</kbd>
      <span class="sound">kick</span>
    </div>
</div>

这是 JavaScript 代码

var x = document.querySelector('.key');
x.addEventListener('click', popUp);

function popUp(e) {
    alert(e.target.innerHTML);
}

最佳答案

结合Array.from方法使用querySelectorAll代替querySelector

由于 querySelectorAll() 返回一个NodeList,因此您必须附加一个click事件处理程序 对于每个项目。

var x = Array.from(document.querySelectorAll('.key')).forEach(function(item){
   item.addEventListener('click', popUp);
});

function popUp(e) {
    alert(e.target.innerHTML);
}
<div class="keys">
     <div data-key="65" class="key">
      <kbd>A</kbd>
      <span class="sound">clap</span>
    </div>

    <div data-key="83" class="key">
      <kbd>S</kbd>
      <span class="sound">hihat</span>
    </div>

    <div data-key="68" class="key">
      <kbd>D</kbd>
      <span class="sound">kick</span>
    </div>
</div>

关于javascript - 在存在多个类的情况下单击时获取标签的数据键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51055735/

相关文章:

javascript - 无法在警告框中添加中断

ios - 如果调用另一个 Alert Controller 以显示,则删除 Alert Controller

Javascript 遍历元素并将元素换成 HTML

javascript - Chrome WebAPIchrome.webRequest.onBeforeSendHeaders 不更改传出请求中的参数

JavaScript If/Else 样式改变

android - 有没有办法通过代码在Android设备上模拟点击屏幕?

windows-phone-7 - WP7警报对话框

javascript - 在 jQuery 中减慢 location.reload()?

php - AJAX 表单仅重新加载页面

Android:所有 View 都需要点击 2 次才能触发 OnClick 事件