2016-12-07 83 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