【问题标题】:Assign by value in Javascript在 Javascript 中按值赋值
【发布时间】:2011-09-22 14:38:30
【问题描述】:

我想将 DOM 树的一部分分配给全局变量,这样我的变量和 DOM 树就不再有引用了。 DOM 树的一部分应该被复制到全局变量中,当我对 DOM 树进行更改时,它不应该更改我的变量。 正常赋值不行。

用代码 sn-p 说明:

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 变量 (rowX) 中存储一些东西,而 rowY 将更改 children 变量作为副作用,所以对 DOM 树还有一些参考。

谢谢你的提示

【问题讨论】:

  • 对不起,但是什么?问题是什么?标题与您所写问题的主体有何关系?你试过什么吗?什么地方出了错?什么没用?你有没有对此进行任何研究? ...我并不是要好斗,但我不清楚你的问题,也没有任何建议你自己努力解决这个问题。我目前投票结束,但我建议您阅读'Writing the Perfect Question',然后编辑/澄清您提出的问题吗?
  • @David Thomas 我添加了说明。如果您对这个问题感兴趣,只需问不清楚的地方,我会改进我的问题。

标签: javascript firefox-addon pass-by-value


【解决方案1】:

在这种情况下,您可能需要使用cloneNode(deep:Boolean) 方法:

var myVar = myNode.cloneNode(true);

【讨论】:

【解决方案2】:

DOM 中所谓的“按值”部分究竟在哪里?

你可以尝试使用 jQuery 来完成这样的事情:

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

【讨论】:

  • 我不认为他在使用 jQuery。
【解决方案3】:

http://jsfiddle.net/KH8CA/

如果您使用 jquery,这很容易。只需抓住你的元素并克隆它。

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

【讨论】:

  • 不用jQuery也超级简单;)
猜你喜欢
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 2016-03-26
  • 2023-02-20
  • 2012-02-16
  • 2014-06-01
  • 2023-03-29
  • 2018-04-19
相关资源
最近更新 更多