![](/img/trans.png)
[英]Javascript get element index position in DOM array by class or id
[英]Get index/position of element and it's Name in Javascript [ DOM ]
我嘗試在容器中找到 div 元素的索引位置和名稱,但是每當我嘗試時,它都沒有給我正確的輸出。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="container">
<div>This is div</div>
<p>This is Paragraph</p>
<script>
let x = document.getElementById("container")
let y = x.childNodes;
for(let i =0; i < y.length ; i++)
{
if(y[i].nodeType == 2)
{
alert(y[i].nodeName);
}
}
</script>
</body>
</html>
nodeType 屬性以數字形式返回指定節點的節點類型。
如果節點是元素節點,則 nodeType 屬性將返回 1。
如果節點是屬性節點,則 nodeType 屬性將返回 2。
如果節點是文本節點,則 nodeType 屬性將返回 3。
如果節點是注釋節點,則 nodeType 屬性將返回 8。
let x = document.getElementById("container") let y = x.childNodes; for(let i =0; i < y.length ; i++) { if(y[i].nodeType == 1) { alert(y[i].nodeName); } }
<!DOCTYPE html> <html> <head> </head> <body> <div id="container"> <div>This is div</div> <p>This is Paragraph</p> </div> </body> </html>
基於 MBadrian 的解決方案,就您設法獲取 nodeName 而言,您可以根據節點名稱設置條件,現在如果您想獲取特定節點,您可以獲取它們的文本內容並基於該名稱設置您的條件...下面的代碼與 MBadrian 的答案相同,只是我替換了 nodeName 的返回值並返回了 textContent
let x = document.getElementById("container")
let y = x.childNodes;
for(let i =0; i < y.length ; i++)
{
console.log(y[i].nodeType)
if(y[i].nodeType == 1)
{
alert(y[i].textContent);
}
}
2 個標簽之間的空格、換行和制表符被視為一個文本節點。 所以在內部DIV之前有一個節點。 同樣,內部 DIV 和 P 元素之間有一個文本節點。
檢查 for 循環內每個子節點的 'tagName' 屬性也將起作用。 文本節點沒有 'tagName' 屬性。
<div id="container">
<div>This is div</div>
<p>This is Paragraph</p></div>
<script>
let x = document.getElementById("container")
let y = x.childNodes;
for(let i =0; i < y.length ; i++) {
if(y[i].tagName && (y[i].tagName.toUpperCase() == "DIV" || y[i].tagName.toUpperCase() == "P")) {
alert(i + ": " + y[i].innerHTML);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.