Javascript 如何在不影响DOM的情况下获取HTML克隆、修改它、获取HTML字符串?

Javascript 如何在不影响DOM的情况下获取HTML克隆、修改它、获取HTML字符串?,javascript,jquery,dom,Javascript,Jquery,Dom,我有一些HTML代码如下: <div style="background:red;width:900px;height:200px" id="wrap"> <div id="inner" style="width:300px;float:left"> ... </div> </div> ... 我需要: 1) 删除“样式”属性和其他一些属性 2) 只保留“id”属性 4) 以字符串形式获取结果HTML 5) 所有

我有一些HTML代码如下:

<div style="background:red;width:900px;height:200px" id="wrap">
    <div id="inner" style="width:300px;float:left">
       ...
    </div>
</div>

...
我需要:

1) 删除“样式”属性和其他一些属性

2) 只保留“id”属性

4) 以字符串形式获取结果HTML

5) 所有这些都不会影响原始标记


我曾尝试将它们克隆为javascript对象,但对它们的操作会影响DOM。

听起来您的方法是正确的,克隆和更改肯定会起作用。我不知道您的代码为什么要更改原始DOM,但这并不是:

var el= document.getElementById('wrap');
el= el.cloneNode(true);
el.removeAttribute('style');
el.getElementsByTagName('div')[0].removeAttribute('style');

// Get full markup (like outerHTML, but better-supported)
//
var outer= document.createElement('div');
outer.appendChild(el);
alert(outer.innerHTML);
您可以将
#包装
元素,根据需要修改,并将其附加到DOM中不存在的新元素:

var cloned = $('#wrap').clone(), 
   container = $('<div></div>'); 

cloned.find('div').andSelf().removeAttr('style'); 

alert(container.append(cloned).html());
var clone=$('#wrap').clone(),
容器=$('');
克隆的.find('div').andSelf().removeAttr('style');
警报(container.append(cloned.html());
检查上面的示例