javascript - 如何使只有具有 id 的元素可点击?

标签 javascript class click

每个 div 都是可点击的 (JavaScript)。

如何使得只有具有 id 的元素可点击,而具有 class 的元素不可点击?

是否有替代选项:

var div = document.getElementsByTagName ("div"); 

var div = document.getElementsByClassName ("div");

我尝试过,但没有成功

var div = document.getElementsByTagName("div");
var divCount = div.length;
var clickedDivId

for (var i = 0; i < divCount; i += 1) {

  div[i].onclick = function(e) {

    clickedDivId = this.id;
    event.stopPropagation();
    alert(this.id);

  };
}
#parent {
  width: 450px;
  height: 170px;
  margin: 10px;
  padding: 10px;
  background-color: blue;
}

#child {
  width: 430px;
  height: 70px;
  margin: 10px;
  float: left;
  background-color: red;
}

.parentclass {
  width: 450px;
  height: 170px;
  margin: 10px;
  padding: 10px;
  background-color: blue;
}

.childclass {
  width: 430px;
  height: 70px;
  margin: 10px;
  float: left;
  background-color: red;
}
<div id="parent">
  <div id="child"></div>
</div>

<div class="parentclass">
  <div class="childclass"></div>
</div>

最佳答案

这是一个解决方案,其中处理具有现有属性 id 的元素的点击。您可以在 JS 代码中添加 else 部分来处理所有其他点击的 div

var div = document.getElementsByTagName("div");
var divCount = div.length;

for (var i = 0; i < divCount; i += 1) {
    div[i].onclick = function(e) {
        if (e.target.id) alert(this.id);
        e.stopPropagation();
    };
}   
#parent {
  width: 450px;
  height: 170px;
  margin: 10px;
  padding: 10px;
  background-color: blue;
}

#child {
  width: 430px;
  height: 70px;
  margin: 10px;
  float: left;
  background-color: red;
}

.parentclass {
  width: 450px;
  height: 170px;
  margin: 10px;
  padding: 10px;
  background-color: blue;
}

.childclass {
  width: 430px;
  height: 70px;
  margin: 10px;
  float: left;
  background-color: red;
}
<div id="parent">
  <div id="child"></div>
</div>

<div class="parentclass">
  <div class="childclass"></div>
</div>

这是一个简短的 JS 代码:

var div = document.getElementsByTagName("div");

[...div].forEach( (el) => {
    el.onclick = function(e) {
            e.stopPropagation();
            e.target.id &&  alert(this.id);
        }
});

关于javascript - 如何使只有具有 id 的元素可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260098/

相关文章:

javascript - 在 threejs 中加载到 Material 上的 svg 的每个 <g> 标签上的鼠标事件

python - 与它们的等效函数相比,python 类慢了多少?

java - 如何将音符名称和频率存储为数据以在java中的其他类中使用

javascript - 如何在组件 VueJS 中初始化小部件?

javascript - 创建基于 Canvas 的 UI 组件是否有意义?

javascript - 当数据类属性更改时重新渲染 React 组件

jquery - 使用 jQuery 触发器按类名触发父窗口元素上的单击事件

css - 单击打开 div(保持打开状态)

javascript - jquery 点击模拟不起作用

javascript - 如何在函数中引用自身而不考虑外部变量的变化?