【发布时间】:2017-08-05 12:46:57
【问题描述】:
我又带着另一个 JavaScript DOM 问题回来了。避免使用 jQuery。
我试图在 HTML 表格中选择同一类的所有元素,并在鼠标悬停时将它们突出显示为蓝色。我想突出显示与悬停元素具有相同类名的所有单元格。到目前为止,我已经为这个问题想出了两种解决方案,但都没有奏效。
解决方案一:
var cellElements = document.getElementsByTagName('td');
for (var i = 0; i < cellElements.length; i++){
cellElements[i].addEventListener('mouseover', function(e){
var hoveredElement = e.target;
if (cellElements[i].className === hoveredElement.className){
cellElements.style.color = "blue";
}
else {
cellElements.style.color = "black";
}
})
}
或解决方案二:
var cellElements = document.getElementsByTagName('td');
for (var i = 0; i < cellElements.length; i++){
cellElements[i].addEventListener('mouseover', function(e){
var hoveredElement = e.target;
document.getElementsByClassName(hoveredElement.className).style.color="blue";
})
}
HTML 片段:
<tr class="row-c tr-selected">
<td><input type="checkbox"></input></td>
<td class="column-a">Specification 3</td>
<td class="column-b">Specification 3</td>
<td class="column-c">Specification 3</td>
</tr>
<tr class="row-d tr-selected">
<td><input type="checkbox"></input></td>
<td class="column-a">Specification 3</td>
<td class="column-b">Specification 3</td>
<td class="column-c">Specification 3</td>
</tr>
我想尝试弄清楚如何在没有 jQuery 的情况下完成此操作。
【问题讨论】:
-
您想一次性突出显示所有内容还是只突出显示悬停的那个?
-
@Kinduser 我想突出显示与悬停元素具有相同类名的所有单元格。谢谢你的问题。我将编辑这篇文章以澄清这一点。
-
HTML 代码也会很有帮助。
-
标题具有误导性。你想比较什么?
-
有什么理由不使用 css
:hover代替吗?我知道你想“弄清楚如何在没有 jQuery 的情况下完成这项工作”...... CSS 是在没有 jQuery 的情况下完成这项工作的一种完全有效的方法:p
标签: javascript html dom html-table dom-events