【问题标题】:JavaScript setAttribute alternativeJavaScript setAttribute 替代品
【发布时间】:2009-03-28 00:58:23
【问题描述】:

我正在创建这个创建元素的 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'] 但它们都不起作用。

谁能给我一些建议,

提前致谢

t

【问题讨论】:

    标签: javascript dom


    【解决方案1】:

    使用elem[i]

    function createElement( strName, objAttributes )
    {
      var elem = document.createElement(strName);
    
      for ( var i in objAttributes )
          elem[i] = objAttributes[i];
    
      return elem;
    }
    

    【讨论】:

    • 是的,你是对的。谢谢!现在我只需要处理一些 html 属性,比如样式。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 2013-03-07
        • 1970-01-01
        • 2012-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-31
        相关资源
        最近更新 更多