2016-12-07 46 views
1

我想訪問元素的第二個節點。下面是我使用的功能:更改文本節點的值

window.onload = function() { 
var list = document.getElementsByClassName("ms-gb") 

for (i=0;i<list.length;i++) { 
    console.log(list[i]); 
    var x = list[i].childNodes[1]; 
    console.log(x); 
    var x = x.nodeValue.slice(1); 
}; 
}; 

console.log(list[i])回報

<td> 
<a href="www.xxx.com">link</a> 
0 text node I want to edit via script 
<span>something</span> 
</td> 

console.log(x)返回字符串0 text node I want to edit via script

如何擺脫0的?切片方法似乎不起作用...

+0

哪些元素是class'foo'? (這顯然是示例代碼;感謝您不要在這裏丟棄2頁代碼) – Terminus

+0

嗨,我錯過了原來問題丟失的for循環。現在我努力在節點中切割字符串.. – DDEX

回答

4

您的for塊沒有用{...}包裝,所以實際循環只在console.log(list[i]);行上運行。

i變量當前等於list.length,所以list[i]undefined,而你試圖讓undefinedchildNodes

這裏的變化:

window.onload = function() { 
 
    var list = document.getElementsByClassName("foo") 
 

 
    for (i=0;i<list.length;i++) { 
 
    console.log(list[i]); 
 
    var x = list[i].childNodes[1]; 
 
    console.log(x); 
 
    } 
 
};
<td> 
 
<a href="www.xxx.com">link</a> 
 
text node I want to edit via script 
 
<span>something</span> 
 
</td>

+0

謝謝!就是這樣。然後如何更改文本節點的值?我想切掉字符串的第一個字符... – DDEX

+0

內容 - 即在上面的示例中,我想在'0我想通過腳本進行編輯'的文本節點的開始擦除'0'。 – DDEX

+0

'list [i] .childNodes [1] .textContent = list [i] .childNodes [1] .textContent.slice(1)'(如果此節點僅包含文本..) – Dekel