利用mergeAttributes设置name属性

在国外一博客看到的技巧,终于解决IE的这个老大难问题。我在IE的setAttribute bug也提到其解决方法,一是innerHTML,一是IE特别的creatElement使用方法,不过都是要求在生成DOM时一同搞定name属性,这种在DOM生成后再修改name属性的方法真是高明啊。

介绍一下mergeAttributes 方法。它有两个参数oSource与 bPreserve :

mergeAttributes
oSource IE5.0 必选项。对象(Element)。指定属性要被复制到 object 的对象。
bPreserve IE5.5 可选项。布尔值(Boolean)。 false :  不保护目标对象的身份属性(id,name)。 true : 默认值。保护目标对象 object 的身份属性。

mergeAttributes方法能把oSource 对象的所有属性,包括自定义属性,依附在其上面的事件与样式都复制过,在 IE5.0 及之前的版本中,只读属性不会被复制。如 id 属性。 在 IE5.5+ 中,通过设置 bPreserve 参数值为 false ,可以使 oSource 的所有属性被复制到 调用此方法的对象上 ,包括id属性和 name属性。

 
//下面代码会把新生成的input对象的name属性复制到inputObject对象上。
inputObject.mergeAttributes(document.createElement("<input name='nasami' />"))

下面是一个完美的设置属性的方案

 
      var setAttribute = function(obj,attrName,attrValue){
        if("!+\v1" && attrName === "name"){
          obj.mergeAttributes(document.createElement("<input name='" + attrValue + "'/>"), false);
        }else{
          if(obj.setAttribute){
            obj.setAttribute(attrName,attrValue);
          }else{
            obj[attrName] = attrValue;
          }   
        }         
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值