2017-08-31 58 views
0

我正在嘗試創建一個函數,根據其內容根據不同的元素髮生分類元素。例如,如果幾個元素的類名稱爲「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"} 
    } 
} 

感謝

+3

'thisOne [0]'應該是'thisOne'和'的nodeValue = 「喬」'應該是'的nodeValue === 「喬」'(你似乎知道'= '是一項任務)。 –

+0

是的,它做到了。不得不承認,我仍然在處理=/==/===。謝謝! – logan

回答

0

您可以測試使用Node.textContent方法元素的文本內容。假設節點沒有其他內容,但它可能位於由標記span創建的子元素內。如果「名稱」容器包含額外的空白區域,則可能需要修剪結果。

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>