JavaScript setAttribute替代方案

时间:2009-03-28 00:58:24

标签: javascript dom

我正在创建这个创建元素的JS函数 该函数采用两个参数strName和objAttributes

function createElement( strName, objAttributes )
{
  var elem = document.createElement(strName);

  for ( var i in objAttributes )
    elem.setAttribute(i, objAttributes[i]);

  return elem;
}

这在Fx中工作正常,但在MSIE中不行 我知道setAttibute方法是错误的,建议的解决方法是

elem.attr = 'val';

但是现在我不知道如何在我的循环中写这个。

我已经尝试了elem.style和elem ['style'],但它们都没有效果。

任何人都可以给我一些建议,

提前致谢

3 个答案:

答案 0 :(得分:5)

使用elem[i]

function createElement( strName, objAttributes )
{
  var elem = document.createElement(strName);

  for ( var i in objAttributes )
      elem[i] = objAttributes[i];

  return elem;
}

答案 1 :(得分:1)

您不能只交换设置属性和setAttribute。

您必须小心设置元素的属性而不是使用setAttribute。 需要仔细编写样式属性和事件处理程序,并且那些曾经在html(禁用,多个,只读)中最小化的属性具有特定于浏览器的有效值。

另外,如果你设置了element.class =“mynewclass”,你会收到一个错误,因为class是一个保留的javascript词,尽管在setAttribute赋值中将它用作字符串是完全安全的。属性名称为“.className”,标签的“for”属性的正确名称为“htmlFor”。

答案 2 :(得分:1)

jQuery处理跨浏览器的废话......

 $(elem).attr(i, objAttributes[i]);