Javascript DOM,使用 nextsibling 属性 访问 <li> 元素的文本节点
Javascript DOM,accesing the textnode of the <li>element using nextsibling property
<body>
<div id="li-container">
<ul>
<li class="hot">item1</li>
<li id="secLi" class="cool">item2</li>
<li class="cool">item3</li>
<li class="cool">item4</li>
</ul>
</div>
<script language="javascript" type="text/javascript">
var secLi = document.getElementById("secLi");
var sib = secLi.nextSibling;
document.write(sib);
//OR //OR //OR //OR //OR //OR //OR //OR
var secLi = document.getElementById("secLi");
var sib = secLi.nextSibling;
document.write((sib).textContent);
</script>
</body>
我想使用 nextSibling 属性 获取第三个列表(li)项的文本节点并写入 document.I 知道我可以使用 "li.textContent" 访问它但我想要就这样。
不,我不是在寻找 "nextElementSibling",我想使用 "nextSibling" 属性 访问 "secondli" 的 "textNode",那是因为如果我想到达 "third li",我必须使用 "nextSibling.nextSibling" 两次才能到达 "third li"。(1)第一个 "nextSibling" 用于 "text-node" “2nd li”和(2)Second "nextSibling" 用于“3rd li”。所以我无法使用 "next-sibling" 一次获得“2nd li”的文本节点。
我使用 text-fixer.com 删除了其他空格和换行符,即使它起作用了。
您是否正在寻找 nextElementSibling
?
var secLi = document.getElementById('secLi');
secLi.nextSibling; // Is a text node.
secLi.nextElementSibling; // Is the <li> you're looking for, so..
secLi.nextElementSibling.textContent; // Gives you "item3"
更新
为了更好地理解为什么您想要 nextElementSibling
而不是 nextSibling
,请查看父级 <ul>
所说的 childNodes
是:
secLi.parentElement.childNodes;
// [#text, <li>, #text, <li>, #text, <li>, #text, <li>, #text]
您不需要 nextSibling
,因为它只是列表项之间的空白文本。您需要下一个 元素 (列表项)。
见https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode/nextElementSibling
li
元素的 textnode
是 2nd li
元素的 child
。
所以代码是
变量同胞 = secLi.firstChild.textContent;
document.write(同胞);
@brianvaughn
<body>
<div id="li-container">
<ul>
<li class="hot">item1</li>
<li id="secLi" class="cool">item2</li>
<li class="cool">item3</li>
<li class="cool">item4</li>
</ul>
</div>
<script language="javascript" type="text/javascript">
var secLi = document.getElementById("secLi");
var sib = secLi.nextSibling;
document.write(sib);
//OR //OR //OR //OR //OR //OR //OR //OR
var secLi = document.getElementById("secLi");
var sib = secLi.nextSibling;
document.write((sib).textContent);
</script>
</body>
我想使用 nextSibling 属性 获取第三个列表(li)项的文本节点并写入 document.I 知道我可以使用 "li.textContent" 访问它但我想要就这样。
不,我不是在寻找 "nextElementSibling",我想使用 "nextSibling" 属性 访问 "secondli" 的 "textNode",那是因为如果我想到达 "third li",我必须使用 "nextSibling.nextSibling" 两次才能到达 "third li"。(1)第一个 "nextSibling" 用于 "text-node" “2nd li”和(2)Second "nextSibling" 用于“3rd li”。所以我无法使用 "next-sibling" 一次获得“2nd li”的文本节点。
我使用 text-fixer.com 删除了其他空格和换行符,即使它起作用了。
您是否正在寻找 nextElementSibling
?
var secLi = document.getElementById('secLi');
secLi.nextSibling; // Is a text node.
secLi.nextElementSibling; // Is the <li> you're looking for, so..
secLi.nextElementSibling.textContent; // Gives you "item3"
更新
为了更好地理解为什么您想要 nextElementSibling
而不是 nextSibling
,请查看父级 <ul>
所说的 childNodes
是:
secLi.parentElement.childNodes;
// [#text, <li>, #text, <li>, #text, <li>, #text, <li>, #text]
您不需要 nextSibling
,因为它只是列表项之间的空白文本。您需要下一个 元素 (列表项)。
见https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode/nextElementSibling
li
元素的 textnode
是 2nd li
元素的 child
。
所以代码是
变量同胞 = secLi.firstChild.textContent;
document.write(同胞);
@brianvaughn