2016-08-30 38 views
0

我試圖檢查與JavaScript之間,如果兩個html轉義標記之間,存在一個div?看下面的例子:HTML源代碼兩個html標籤之間的get元素被註釋了嗎?

<html> 
 
    <body> 
 
    <div>.....</div> 
 
    <h1>.....</h1> 
 
    <table> 
 
     <tr> 
 
     <td> 
 
      <!-- #html# --> 
 
      Get these Value 
 
      <!-- #/html# --> 
 
      <td> 
 
     </tr> 
 
    </table> 
 
    <!-- #html# --> 
 
      .... 
 
    <!-- #/html# --> 
 
    </body> 
 
</html>

+0

什麼是你最終要完成?我試圖弄清楚爲什麼要評論你的''標籤。 –

+0

我昨天在這個例子中犯了一個錯誤。它們不是標籤,但是它們與標籤(#)嵌套,請參閱上面的示例。這些評論是由通訊系統製作的。如果這些評論裏面有一個div標籤,這意味着用戶可以在儀表板上對其進行編輯。 – Perhp

回答

0

我使用ES6,但是你可以通過經典的迭代超過childNodes achive它。

var res = [], isInside = false; 
 

 
for (var node of document.body.childNodes) { 
 
    if (node.nodeType === Node.COMMENT_NODE) { 
 
    if (node.nodeValue.trim() === "<html>") { 
 
     isInside = true; 
 
     continue; 
 
    } else if (node.nodeValue.trim() === "</html>") { 
 
     break; 
 
    } 
 
    } 
 
    
 
    if (isInside) { // No else - include other comments 
 
    res.push(node); 
 
    } 
 
} 
 

 
console.log(res);
<!-- <html> --> 
 
    <div>...</div> 
 
<!-- </html> -->

+0

感謝您的幫助,這是我搜索的解決方案。通過一些修改,我可以將它用於我自己的代碼。 – Perhp

+0

我現在有問題。如果元素位於文檔主體的第一層,此方法效果很好,但如果它們嵌套到其他標記中,則無法獲得這些評論。 (ps:他們的評論現在的值#html#請參閱上面的示例...) – Perhp

+0

@Perhp,使用遞歸dom遍歷。 – Qwertiy