【问题标题】:Cross-browser dynamic setting of a CSS propertyCSS属性的跨浏览器动态设置
【发布时间】:2014-10-21 14:51:12
【问题描述】:

我有一个函数可以获取多条数据并为定义的元素设置 CSS 属性。

代码如下:

function setStyle(element,property,target){
     element.style[property] = target;
}

var EL = document.getElementById("id");
setStyle(EL,"width","50px");

它在大多数浏览器中运行良好,但不适用于 IE6–IE9。

我找到了document.defaultView.getComputedStyleelement.currentStyle[type],但是这些方法有样式,我不能用它们来设置。

对于旧的 IE 有什么办法吗?

我不想使用 jQuery 或任何其他 JS 库,谢谢。

【问题讨论】:

标签: javascript css internet-explorer cross-browser internet-explorer-6


【解决方案1】:

默认方式为element.style.property = "value",如:

document.getElementById("id").style.width = "50px";

它没有理由不工作。但是,作为替代方案,可以考虑在类中设置 css 样式,并通过 className 属性将其添加到元素中。它被广泛支持:

css:

.myClass { width: 50px; }

js:

document.getElementById("id").className = "myClass";



编辑

另一种方法,在 IE8+ 中工作(如果您真的不需要更低的值)将实际的 style 属性设置为 DOM 元素,因此您可以将属性作为参数获取:

http://jsfiddle.net/ppf5qcvo/

function setStyle(element,property,target){
    element.setAttribute("style", property + ":" + target);
}
var el = document.getElementById("test");
setStyle(el, "color", "red");

【讨论】:

  • 我在函数中使用它,我要定义应该在函数参数中更改的属性,所以我不能使用element.style.property = "value"
  • 编辑 谢谢,但我真的需要 IE6 支持它
【解决方案2】:

你考虑过使用 jQuery 吗?它为您处理所有跨浏览器问题。您可以使用以下语句完成相同的操作:

$('#id').width('50px');

【讨论】:

  • $('#id').css('width','50px') 准确地说。
  • 对不起!我忘了说我不想使用 jQuery 或任何其他 js 库(已编辑)
  • 另外,如果你想使用 jQuery 设置其他样式,refer here.
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 2012-09-30
  • 2019-06-03
相关资源
最近更新 更多