gpt4 book ai didi

javascript - 选择要序列化的属性

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:53 24 4
gpt4 key购买 nike

当使用 new XMLSerializer().serializeToString()div 序列化为字符串时,我想选择要序列化的 DOM 属性。

示例:

var blah = document.getElementById('blah');
var blah1 = document.getElementById('blah1');
blah1.style.top = "100px";
console.log(new XMLSerializer().serializeToString(blah));
#blah1 { position: absolute; }
<div id="blah"><div id="blah1">Bonjour1</div></div>

例如,代替...

<div xmlns="http://www.w3.org/1999/xhtml" id="blah"><div id="blah1" style="top: 100px;">Bonjour1</div></div>

...我想序列化除 top 样式属性之外的所有内容:

<div xmlns="http://www.w3.org/1999/xhtml" id="blah"><div id="blah1">Bonjour1</div></div>

如何在使用 new XMLSerializer().serializeToString() 时选择要序列化的属性?

最佳答案

  1. 使用 node.cloneNode(true) 深度克隆树并插入到 DocumentFragment
  2. 使用 fragment.querySelectorAll("[style]") 查找所有具有您要删除的属性的元素
  3. 从匹配元素中删除属性
  4. 序列化片段

var blah = document.getElementById('blah');
var blah1 = document.getElementById('blah1');

blah1.style.top = "100px";

var frag = new DocumentFragment()
frag.appendChild(blah.cloneNode(true))

for(var e of frag.querySelectorAll("[style]")) {
e.removeAttribute("style")
}

console.log(new XMLSerializer().serializeToString(frag))

使用 Firefox 33 测试

关于javascript - 选择要序列化的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com