2017-08-31 14 views
0

分類された要素の内容に基づいて異なることが起こる関数を作成しようとしています。たとえば、いくつかの要素のクラス名が「name」で、コンテンツ(またはノード値)が「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"} 
    } 
} 

おかげ

+3

' 'は割り当てです)。 –

+0

はい、そうでした。私はまだ== ==/===を扱っています。ありがとうございました! – logan

答えて

0

あなたはNode.textContentメソッドを使用して、要素のテキストの内容をテストすることができます。これは、ノードがテストされている内容以外の内容を持っていないことを前提としていますが、たとえばspanタグで作成された子要素内にある可能性があります。 「名前」コンテナに追加の空白が含まれている場合は、結果をトリミングする必要があります。 thisOne [0] `` thisOne`であるべきで、 `のnodeValue = "ジョー"` `のnodeValue === "ジョー"`(する必要がありますが、 `=ことを知っているように見える

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>

関連する問題