Javascript 清除每个DOM元素上的样式

Javascript 清除每个DOM元素上的样式,javascript,css,Javascript,Css,我试图找到一种聪明的方法来清除每个DOM元素上先前更改的样式属性 我知道有一种方法可以清除这种样式 (边距只是一个示例属性): 以这种方式清除具有许多样式属性的许多元素需要很长时间,因此我希望有一些“一次清除所有元素”的解决方案。您可以使用 document.querySelectorAll("*") 您将获得一个对象,其中包含所有元素,并带有编号的键Object.keys将为您提供一个包含所有键的数组,使用forEach可以迭代并将样式或任何操作应用于元素 var elem=documen

我试图找到一种聪明的方法来清除每个DOM元素上先前更改的样式属性

我知道有一种方法可以清除这种样式 (边距只是一个示例属性):


以这种方式清除具有许多样式属性的许多元素需要很长时间,因此我希望有一些“一次清除所有元素”的解决方案。

您可以使用

document.querySelectorAll("*")
您将获得一个
对象
,其中包含所有
元素
,并带有编号的
Object.keys
将为您提供一个包含所有键的数组,使用
forEach
可以迭代并将样式或任何操作应用于元素

var elem=document.queryselectoral(“*”);
Object.keys(elem).forEach((e)=>elem[e].style.margin=“32px”)

scscs
这将清除所有标记的样式:

const tags=document.queryselectoral(“*”);
for(让我来看看标签){
i、 风格='';
}

你好

世界

.cssText
.style
的整个值视为字符串:

此表达式将收集
标记中的所有标记,并覆盖所有
.style
属性

演示
document.documentElement.querySelectorAll('*').forEach(tag=>tag.style.cssText='')
红色
红色
红色
红色
红色
红色
红色
红色
红色
红色

红色
您必须删除内联样式并禁用样式表:

函数clearStyles(){
//删除内联样式:
document.querySelectorAll('*').forEach(e=>e.style=null);
//禁用样式表:
Object.values(document.styleSheets).forEach(v=>v.disabled=true);
}
h1{
颜色:粉红色
}
我的颜色是在样式表中设置的
背景是内联设置的
清除样式
文档的可能副本。getElementsByTagName('*')。removeAttribute('style')@BenjaminRussell,仅当样式设置为与
style
属性内联时才起作用。它不会影响计算样式。首先,您需要设置自己的方法来跟踪哪些元素得到CSS更改,并记录元素、CSS属性和原始值。没有这样的内在方式可以做到这一点。然后,您可以在该元素列表上循环并将属性恢复为其原始值,这非常容易。
。getElementsByTagName()
现在应该很少使用,因为它返回一个活动节点列表,这会影响性能
.querySelectorAll()
是更好的选择。此外,您的解决方案仅在样式与
style
属性内联设置时才会清除样式。它不会清除任何计算样式。这也会更改每个元素,OP表示他们只想更改已更改的元素。
。getElementsByTagName()
现在应该很少使用,因为它会返回活动节点列表,这会影响性能
.querySelectorAll()
是更好的选择。此外,您的解决方案仅在样式与
style
属性内联设置时才会清除样式。它不会清除任何计算样式。这也会改变每一个元素,OP说他们只想改变已经改变的元素。@ScottMarcus感谢您的反馈。我已经编辑了我的答案。
document.querySelectorAll("*")
document.documentElement.querySelectorAll('*').forEach(tag => tag.style.cssText = '');