[英]Removing elements from a DOM copy
我想從主DOM的副本中刪除一個元素,但我無法讓它工作。
基本上我試圖從重復的DOM中刪除h2元素,並在警報中返回修改后的代碼,但是到目前為止,我已經嘗試過的任何東西,我只是得到了原始的DOM。
<html>
<head>
</head>
<body>
<h2>Test</h2>
<script type="text/javascript" id="CustomScript">
var Page = document.documentElement;
var TempPage = document.documentElement;
TempPage.removeChild("h2"); // Remove Not working
TempPage.getElementById("h2").innerHTML = ""; // Remove Not working
</script>
<input type="button" value="Get Pages Code" onclick="alert(TempPage.innerHTML)">
</body>
</html>
如果可能,我寧願不使用jQuery或YUI等,只是想使用常規的Javascript。
TempPage
和Page
是相同的元素,只有兩個不同的變量指向它。
通過一個變量進行的任何更改都將自動發生在另一個變量上 要以不同的方式對待它們,必須要克服另一個。 Node.cloneNode
可能有用,但不受廣泛支持。 您需要制作一份深層副本。
您的問題有兩個部分,而且您正在錯誤地執行這兩個部分。
TempPage
與Page
是同一個對象。 分配給另一個變量不會復制 - 它只是讓您通過其他名稱訪問同一個對象。 您需要顯式創建副本。 h2
元素的方法都不正確。
removeChild()
將無法工作,因為:
documentElement
是<html>
元素,但<h2>
元素是<body>
的子元素,而不是<html>
。 getElementById()
將無法工作,因為您的<h2>
元素沒有id屬性。 你將如何做到這一點:
var TempPage = document.documentElement.cloneNode(true); // copy document
var h2 = TempPage.querySelector('h2'); // find h2 element
h2.parentNode.removeChild(h2); // remove h2 element
如果querySelector
不可用,這將是一個更繁瑣的任務,但仍然可以使用普通的DOM操作。 你真的需要了解DOM操作
但是,從完整的代碼中我無法理解為什么需要克隆頁面。 這樣做:
function textContent(node) {
return node.textContent || node.innerText || '';
}
var h2 = document.getElementsByTagName('h2')[0];
var h2Text = textContent(h2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.