2011-06-25 41 views
1

我想將DOM樹的一部分分配給全局變量,以便不再引用我的變量和DOM樹。 DOM樹的部分應該被複制到全局變量中,當我修改DOM樹時,它不應該改變我的變量。 正常分配不會。通過Javascript中的值進行賦值

澄清代碼片段:

var children; 

var Test { 

x: function(e) { 
... 
children = e.target.ownerDocument.getElementsByTagName('body')[0].childNodes; // rowX 
... 
e.target.ownerDocument.getElementsByTagName('body')[0].innerHTML = somethingElse; // rowY 

} 

} 

的問題是,我想有存儲在children變量(一行x)和rowY將改變children變量作爲副作用的東西,所以與DOM一些參考樹還沒有。

感謝您對尖

+0

我很抱歉,但什麼?問題是什麼?標題與你寫的問題的主體有什麼關係?你有嘗試過什麼嗎?什麼地方出了錯?什麼沒有用?你有沒有對此進行任何研究? ......我不是想要好鬥,但你的問題對我來說並不清楚,也沒有任何建議你自己去解決這個問題。我***沒有投票結束,但我可以建議你閱讀['寫完美的問題'](http://tinyurl.com/so-hints),然後編輯/澄清你問的問題? –

+0

不客氣! –

+0

@大衛托馬斯我補充說明。如果你對這個問題感興趣,只要問清楚什麼不清楚,我會提出更好的問題。 – xralf

回答

3

在這種情況下,你可能想使用cloneNode(deep:Boolean)方法:

var myVar = myNode.cloneNode(true); 
+2

鏈接到[Mozilla開發者中心的'cloneNode'](https://developer.mozilla.org/En/DOM/Node.cloneNode)。 –

+1

+1也值得注意的是'childNodes'返回一個實時列表。 –

1

會在哪裏這個所謂的「按價值」 DOM的一部分是什麼呢?你可以嘗試來完成這樣的事情會與jQuery

方式一:

var chunkByVal = $("#bigChunkOfDOM").html(); 
+0

我不認爲他在使用jQuery。 –

1

http://jsfiddle.net/KH8CA/

如果你使用jQuery,這是很容易的。只需抓住你的元素並克隆它。

var backupDom = $("#id").clone(true); 
+0

如果你不使用jQuery,這也很容易;) –