Javascript 克隆/复制html节点及其样式

Javascript 克隆/复制html节点及其样式,javascript,html,Javascript,Html,我最近开始克隆显示对象 我观察到克隆节点基本上有两种方法: 1) 我尝试过用“cloneNode”方法克隆节点,这很好,但在旧浏览器中不受支持 var newNode = oldNode.cloneNode(deep); 2) 对于较旧的浏览器,我尝试复制outerHTML并将值设置为innerHTML。像 newNode.innerHTML = oldNode.outerHTML 注意: 对于某些旧版本的internet explorer,innerHTML是表元素的只读属性。 上述方法

我最近开始克隆显示对象

我观察到克隆节点基本上有两种方法:

1) 我尝试过用“cloneNode”方法克隆节点,这很好,但在旧浏览器中不受支持

var newNode = oldNode.cloneNode(deep);

2) 对于较旧的浏览器,我尝试复制outerHTML并将值设置为innerHTML。像

newNode.innerHTML = oldNode.outerHTML
注意:

对于某些旧版本的internet explorer,innerHTML是表元素的只读属性。


上述方法中最好的方法是什么,或者还有其他最好的方法吗。请帮助我。

您尝试过jquery的
$.clone
方法吗

编辑:啊,我知道你的问题是innerHtml在ie表格中是只读的

为ie表格行中的innerHtml提供解决方法

function setTBodyInnerHTML(tbody, html) {
  var temp = tbody.ownerDocument.createElement('div');
  temp.innerHTML = '<table>' + html + '</table>';

  tbody.parentNode.replaceChild(temp.firstChild.firstChild, tbody);
}
函数setTBodyInnerHTML(tbody,html){
var temp=tbody.ownerDocument.createElement('div');
temp.innerHTML=''+html+'';
tbody.parentNode.replaceChild(temp.firstChild.firstChild,tbody);
}

谢谢。你能详细说明一下吗?这比我想象的要复杂得多,更新了我的答案,如果你还没有尝试过jQuery克隆方法的话,可以尝试两件事,这很好,但我正在寻找纯javascript解决方案。
function setTBodyInnerHTML(tbody, html) {
  var temp = tbody.ownerDocument.createElement('div');
  temp.innerHTML = '<table>' + html + '</table>';

  tbody.parentNode.replaceChild(temp.firstChild.firstChild, tbody);
}