我正在尝试创建一个函数,根据其内容对不同的元素进行分类。例如,如果有几个元素具有类名“name”,并且我想要突出显示内容(或nodevalue)为“Joe”的所有元素,我可以在循环访问getElementsByClassName数组的同时创建if测试吗?
以下是未起作用的函数示例:
function hey()
{var h = document.getElementsByClassName("name");
for(i=0; i<h.length; i++)
{var thisOne = h[i];
if (thisOne[0].childNodes[0].nodeValue="Joe"){thisOne.style.color="red"}
else{thisOne.style.color="blue"}
}
}
由于
答案 0 :(得分:0)
您可以使用Node.textContent
方法测试元素的文本内容。这假设节点没有其他内容而不是正在测试的内容,但它可能位于由span
标记创建的子元素内。如果“name”容器包含额外的空格,则可能需要修剪结果。
function hey()
{var h = document.getElementsByClassName("name");
for(i=0; i<h.length; i++)
{var thisOne = h[i];
if( thisOne.textContent.trim() == "Joe") {
thisOne.style.color="red"
}
else {
thisOne.style.color="blue"}
}
}
hey();
<p class="name">
Joe
</p>
<p class="name">
Felix
</p>
And another <span class="name"> Joe </span>