簡體   English   中英

獲取標簽內的所有節點

[英]Getting all nodes inside a tag

我有這樣的代碼:

<div id="container">
Lorem ipsum dolor sit amet
<p>This is a paragraph</p>
<br />
<span>This is a span</span>
Lorem ipsum dolor sit amet
</div>

是否可以在此div中獲取所有文本節點和標簽? 我想通過數組訪問每個節點(包括文本)。

例如:

for(var i=0;i<nodesArray.length;i++)
{
    document.write("Node: "+nodesArray[i]+"<br />");
}

輸出:

Node: Lorem ipsum dolor sit amet
Node: This is a paragraph
Node: This is a span
Node: Lorem ipsum dolor sit amet

我在jquery中嘗試了“所有選擇器”,但它只獲得標簽,而不是文本。

使用jquery時,可以使用.children()方法( http://api.jquery.com/children/ )將所有子項都放入容器div,然后從每個子項中獲取值並進行打印。

要獲取元素中包含的文本,請使用.text()函數。 例如$('#container').text()或在這種情況下

$("#container").find('*').add('#container').map(function() { return $(this).text }).get()

您可以使用以下代碼執行此操作。 基本上, childNodes獲得作為元素的子代的所有節點的列表。 之后,我們必須遍歷整個獲取的節點列表,然后根據需要打印輸出。

children[i].textContent.trim() != ""上的if條件用於排除空節點(包括<br/>標記)。

 window.onload = function() { var children = document.getElementById("container").childNodes; for (var i = 0; i < children.length; i++) { if (children[i].textContent.trim() != "") document.getElementById("output").innerHTML += "Node: " + children[i].textContent + "<br/>"; } } 
 <div id="container"> Lorem ipsum dolor sit amet <p>This is a paragraph</p> <br /> <span>This is a span</span> Lorem ipsum dolor sit amet </div> <hr> <h3>Output</h3> <div id="output"> </div> 

 jQuery("#container").html() 

這將返回所有text和child元素,但不會像您期望的那樣以數組形式返回。 也許您可以使用它來驗證並執行所需的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM