Javascript JS严格模式:为什么(仅!)边在指定样式属性时抱怨

Javascript JS严格模式:为什么(仅!)边在指定样式属性时抱怨,javascript,microsoft-edge,strict,Javascript,Microsoft Edge,Strict,考虑下面的代码 "use strict"; var el = document.createElement('div'); el.className = 'bluebox'; el.style = 'background:blue; width:100px; height: 100px'; document.getElementsByTagName('body')[0].appendChild(el) Firefox和Chrome确实创建了一个元素 <div class="yolo" s

考虑下面的代码

"use strict";
var el = document.createElement('div');
el.className = 'bluebox';
el.style = 'background:blue; width:100px; height: 100px';
document.getElementsByTagName('body')[0].appendChild(el)
Firefox和Chrome确实创建了一个元素

<div class="yolo" style="background: blue none repeat scroll 0% 0%; width: 100px; height: 100px;">
这里发生了什么?style属性实际上是只读的,FF和Chrome的行为不正确,还是Edge有另一个严格模式的概念,或者。。。?我怎么可能不在这里问就知道了

这里发生了什么

不多。。您试图错误地分配属性集合

style属性实际上是只读的,FF和Chrome的行为不正确,还是Edge有另一个严格模式的概念,或者

不,如果您将它设置为一个属性(setAttribute('style',''),那么所有这些都可以工作。然而,该属性是一个对象——一个集合,其行为不同。所以这次Edge是正确的

我怎么可能不在这里问就知道了

你可以阅读和谷歌:

Exmaples:

elt.style.cssText = "color: blue"; // Multiple style properties

elt.setAttribute("style", "color: blue"); // Multiple style properties

elt.style.color = "blue";  // Directly

var st = elt.style;
st.color = "blue";  // Indirectly

el.style.background=''就是这样。即使其他浏览器没有抱怨,它也不会工作。Edge在这一点上实际上是正确的。您的链接没有清楚地表明IE不喜欢OP问题中的语法。可以通过将字符串直接指定给style属性来设置样式(如elt.style=“color:blue;”),该属性将其转发为el.style.cssText=“color:blue;”,虽然它返回一个CSSSTYLEDECLASSION对象,该对象是只读的,除非您希望在一条语句中设置完整的样式,否则使用样式属性不会覆盖样式属性中可能已设置的其他CSS属性。@James Thrope:谢谢您的提示。感谢:)@mplungjan:这完全正确。然而,文档通常会告诉我们“事情做了什么”,而不是所有“事情不做”的情况。通常情况下,mdn页面的末尾会有一个兼容性图表。给你,谢谢你。特别是当你读到这篇文章《Lain》的时候,如果你把Google这样的Google给我看,你就知道没有必要这么低调了。可能的问题不是如何避免错误,而是为什么会出现错误。现在还不清楚FF和Chrome是否比Edge更不正确,你对我使用它的指责是否有任何根据。。。谢谢你的努力,但是下次你想这样回答的时候请克制。
elt.style.cssText = "color: blue"; // Multiple style properties

elt.setAttribute("style", "color: blue"); // Multiple style properties

elt.style.color = "blue";  // Directly

var st = elt.style;
st.color = "blue";  // Indirectly