javascript - setAttribute 不适用于 IE 上的 'style' 属性

标签 javascript html internet-explorer

我正在将一段为 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/

相关文章:

javascript - 使用 Vue3 对产品进行分组并显示产品数组中的数量

javascript - node.js中处理 `exports`的建议

用于 Accordion 的 HTML5 详细信息元素

css - 嵌入带页眉和页脚的 SWF

javascript - 创建空超链接

html - <td> 宽度的 IE 显示问题

html - 尽管 ie9 中有行数,但保持表高固定

javascript - 克隆两个元素并将它们存储在一个变量中

javascript - 使用angularjs单击输入后运行textbox.blur

javascript - AngularJS 在 IE8 中未定义