从数组

时间:2017-08-31 00:29:55

标签: javascript dom

我正在尝试创建一个函数,根据其内容对不同的元素进行分类。例如,如果有几个元素具有类名“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"}
    }
}

由于

1 个答案:

答案 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>