通过 class 获取元素,以 class 名称定位页面上的所有元素
get element by class, target all elements on page with class name
我正在尝试展示管道中的不同项目阶段。当用户将鼠标悬停在管道的每个阶段时,该阶段内项目的边框颜色会更改以突出显示它们。很简单。
好吧,我似乎无法定位该页面上 class 中的所有项目,它只能让我使用 [0] 定位一个项目。但我需要它来获得 class 中的所有 div,而不仅仅是 1 个。似乎是一个简单的修复,但我似乎找不到任何关于此的东西。
<script>
function scanSHOW() {
document.getElementsByClassName('scan-item')[0].style.border="2px #FF0000 solid";}
function scanHIDE() {
document.getElementsByClassName('scan-item')[0].style.border="2px #666666 solid";}
</script>
<style>.scan-item {border: 2px #666666 solid;}</style>
HTML:
<img id="pipes" src="pipeline.png" usemap="#pipeline" width="483" height="221">
<map name="pipeline">
<area shape="rect" coords="1,69,66,221" href="#" onMouseOver="scanSHOW();" onMouseOut="scanHIDE();" alt="Scan" title="Scan">
</map>
<br/>
<div class="scan-item block"></div> <div class="scan-item block"></div> <div class="scan-item block"></div> <div class="scan-item block"></div>
这正是循环的用途。一个简单的 for
循环依次循环遍历每个元素就可以解决问题。类似于:
var elements = document.getElementsByClassName('scan-item');
for (var i = 0; i < elements.length; i++) {
elements[i].style.border="2px #FF0000 solid";
}
我觉得最简单的就是在全身设置一个点击监听,然后监听某个class的点击。这样你就可以遍历点击对象的dom,然后做任何你想做的事情。
function clickHandler(e){
e = e || window.event;
const target = e.target || e.srcElement;
if (target.className.match(/CLASS NAME HERE/)) {
//do something with the target (traverse up or down - change the element or whatever have you)
console.log(e.target)
}
}
if (document.body.addEventListener){
document.body.addEventListener('click', clickHandler, false);
}
Ps!如果你执行 for 循环,那么我通常会 运行 稍后遇到问题,以上是最可靠的(至少对我而言)。
我正在尝试展示管道中的不同项目阶段。当用户将鼠标悬停在管道的每个阶段时,该阶段内项目的边框颜色会更改以突出显示它们。很简单。
好吧,我似乎无法定位该页面上 class 中的所有项目,它只能让我使用 [0] 定位一个项目。但我需要它来获得 class 中的所有 div,而不仅仅是 1 个。似乎是一个简单的修复,但我似乎找不到任何关于此的东西。
<script>
function scanSHOW() {
document.getElementsByClassName('scan-item')[0].style.border="2px #FF0000 solid";}
function scanHIDE() {
document.getElementsByClassName('scan-item')[0].style.border="2px #666666 solid";}
</script>
<style>.scan-item {border: 2px #666666 solid;}</style>
HTML:
<img id="pipes" src="pipeline.png" usemap="#pipeline" width="483" height="221">
<map name="pipeline">
<area shape="rect" coords="1,69,66,221" href="#" onMouseOver="scanSHOW();" onMouseOut="scanHIDE();" alt="Scan" title="Scan">
</map>
<br/>
<div class="scan-item block"></div> <div class="scan-item block"></div> <div class="scan-item block"></div> <div class="scan-item block"></div>
这正是循环的用途。一个简单的 for
循环依次循环遍历每个元素就可以解决问题。类似于:
var elements = document.getElementsByClassName('scan-item');
for (var i = 0; i < elements.length; i++) {
elements[i].style.border="2px #FF0000 solid";
}
我觉得最简单的就是在全身设置一个点击监听,然后监听某个class的点击。这样你就可以遍历点击对象的dom,然后做任何你想做的事情。
function clickHandler(e){
e = e || window.event;
const target = e.target || e.srcElement;
if (target.className.match(/CLASS NAME HERE/)) {
//do something with the target (traverse up or down - change the element or whatever have you)
console.log(e.target)
}
}
if (document.body.addEventListener){
document.body.addEventListener('click', clickHandler, false);
}
Ps!如果你执行 for 循环,那么我通常会 运行 稍后遇到问题,以上是最可靠的(至少对我而言)。