zoukankan      html  css  js  c++  java
  • 利用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;
              }   
            }         
          }
    
  • 相关阅读:
    MySql常用日期时间查询
    微信开发中网页授权access_token与基础支持的access_token异同
    Sqlserver复杂查询
    Array排序和List排序
    关于java按位操作运算
    验证redis的快照和AOF
    线程安全 加锁机制
    Redis 与 数据库处理数据的两种模式
    redis实现点击量/浏览量
    jsp网站访问次数统计的几种方法
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1620458.html
Copyright © 2011-2022 走看看