我正在将一段为 Firefox 编写的 JS 代码移植到 Internet Explorer 中。我遇到了使用在 Firefox 上工作的 setAttribute
方法更改元素样式的问题。
button.setAttribute('style', 'float: right;');
我尝试设置按钮的样式成员,但它也没有用。这是设置 onclick
事件处理程序的解决方案。
button.style = 'float: right;';
首先我想知道上述问题的解决方法以及
其次,是否有针对浏览器之间这些差异的任何维护列表?
最佳答案
因为样式本身就是一个对象。你想要的是:
button.style.setAttribute('cssFloat','right');
但 IE 不支持样式对象的 setAttribute。所以使用完全支持的跨浏览器:
button.style.cssFloat = 'right';
至于引用,我总是去 www.quirksmode.org 。具体来说:http://www.quirksmode.org/compatibility.html .单击所有与 DOM 相关的内容。
最后,要设置多个属性,我通常使用类似的东西:
function setStyle(el,spec) {
for (var n in spec) {
el.style[n] = spec[n];
}
}
用法:
setStyle(button,{
cssFloat : 'right',
border : '2px solid black'
});
注意:object.attribute = 'value'
虽然适用于所有浏览器,但可能并不总是适用于非 HTML DOM 对象。例如,如果您的文档包含需要使用 javascript 进行操作的嵌入式 SVG 图形,则需要使用 setAttribute
来执行此操作。
关于javascript - setAttribute 不适用于 IE 上的 'style' 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119300/