2012-08-31 146 views
0

假設您想要獲取節點A的innerHTML,但是您希望排除節點B,即節點A的後代的文本節點。您可以參考節點B存儲在變量中,並且不希望從頁面中刪除節點B.您也不會事先知道節點A中的其他內容,因此使用正則表達式從文本節點中刪除文本可能會導致意想不到的後果(如果其他地方存在相同的文本)。有沒有辦法做到這一點,而不修改網頁,如果是這樣,如何?獲取不包含特定後代節點的節點的innerHTML

回答

0

它不會那麼快,但你可以:

  • 克隆外節點
  • 下降到克隆的內部節點(使用某種類型的查找功能),並刪除它
  • 存儲克隆節點的innerHTML
  • 丟棄克隆節點
  • 返回所存儲的innerHTML
1

你可以克隆A節點,從中取出B節點,從而得到其innerHTML的

var A_clone = A.cloneNode(); 
A_clone.removeChild(B); 
/* B has to be evaluated from the cloned node or - if previously 
* evaluated - it will be a reference of the original A node 
*/ 

console.log(A_clone.innerHTML); 
+0

甜蜜,謝謝! – user730569

+0

如果你改用'var newA = document.createElement('div'); newA.innerHTML = A.innerHTML; newA.removeChild(B);'?? – user730569

+0

嗯,剛試過,似乎不會。猜測,因爲它現在是一個不同的節點。 – user730569

0

,你也可以使用XMLSerializer對象序列化a和b,最後用替換一個B的比賽「 「

相關問題