删除元素上的样式

Wes*_*nal 36 html javascript css

我想知道这是否可行.

有这个元素

<div id="sample_id" style="width:100px; height:100px; color:red;">
Run Code Online (Sandbox Code Playgroud)

所以我想删除宽度:100px; 身高:100px;

结果将是

<div id="sample_id" style="color:red;">
Run Code Online (Sandbox Code Playgroud)

任何帮助都会受到好评.:)

Bla*_*kus 65

您可以使用纯Javascript编辑样式.不需要库,除IE之外的所有浏览器都支持,''而不是null(请参阅注释).

var element = document.getElementById('sample_id');

element.style.width = null;
element.style.height = null;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅MDN 上的HTMLElement.style文档.

  • 注意`null`在IE11中默默地失败.用'''代替. (11认同)
  • 我能理解你的观点(是的,有些用户确实对这些评论有所冒犯),但一切都很顺利.我在我的答案之上添加了一个注释,也链接到你的:) (3认同)
  • 截至 2022 年 9 月,这些样式属性的 Typescript 输入无法分配“null”。使用 `.removeProperty` 作为 @madhu 的答案描述。 (3认同)
  • 不确定您是否是对我的答案投反对票的人。因为有更好的方法而投反对票并没有错,但是(如果是您)那么您可以发表评论指出问题所在或指出您的答案,因为我的答案是被接受的答案,并且无论投票多少都会保持最高水平。如果没有评论,人们不会注意到有更好的方法。+1 从我这里得到答案。 (2认同)
  • 在IE中不起作用。您应该使用style.removeProperty()或设置为空字符串,如@OliverJosephAsh注释 (2认同)
  • 提示:对于包含连字符的属性(例如 `max-width`),您可以使用以下语法:`element.style.maxWidth = '';` 或该语法:`element.style['max-width'] = ' ';` (2认同)

小智 15

var element = document.getElementById('sample_id');
element.style.removeProperty("width");
element.style.removeProperty("height");
Run Code Online (Sandbox Code Playgroud)

  • 我不知道,对我来说代码是不言自明的。。。如果他不得不解释代码的作用,他只是重申OP中的要求。 (7认同)
  • 您可以[解释]解释为什么此代码正确吗? (2认同)
  • 尽管此代码可能会解决问题,但好的答案应始终解释此代码如何提供帮助以及它的作用。 (2认同)
  • 请注意,通过这种方法,您可以在字符串中使用 CSS 样式的属性名称,而不是 JavaScript 中其他地方使用的驼峰式大小写样式。例如,您可以编写 `.removeProperty("font-family")` 而不是 `.removeProperty("fontFamily")`。 (2认同)

小智 6

使用 JavaScript

但这取决于您要尝试做什么。如果您只想更改高度和宽度,我建议这样做:

{
document.getElementById('sample_id').style.height = '150px';
document.getElementById('sample_id').style.width = '150px';


}
Run Code Online (Sandbox Code Playgroud)

要完全删除它,请删除样式,然后重新设置颜色:

getElementById('sample_id').removeAttribute("style");
document.getElementById('sample_id').style.color = 'red';
Run Code Online (Sandbox Code Playgroud)

当然,剩下的唯一问题是您希望这种情况发生在哪个事件上。


Har*_*rry 6

更新:为了更好的方法,请参考 Blackus 在同一线程中的回答。


如果您不反对使用 JavaScript 和 Regex,您可以使用以下解决方案来查找属性中的所有widthheight属性,stylereplace它们什么也没有。

//Get the value of style attribute based on element's Id
var originalStyle = document.getElementById('sample_id').getAttribute('style'); 

var regex = new RegExp(/(width:|height:).+?(;[\s]?|$)/g);
//Replace matches with null
var modStyle = originalStyle.replace(regex, ""); 

//Set the modified style value to element using it's Id
document.getElementById('sample_id').setAttribute('style', modStyle); 
Run Code Online (Sandbox Code Playgroud)

  • 每个人都不愿意使用正则表达式 (2认同)

小智 6

您可以简单地将样式设置为 [ unset ],它会强制 CSS 假装样式从未分配给给定元素。

var element = document.getElementById('sample_id');

element.style.width = "unset";
element.style.height = "unset";
Run Code Online (Sandbox Code Playgroud)