利用mergeAttributes设置name属性
2009-12-09 18:04
197 查看
在国外一博客看到的技巧,终于解决IE的这个老大难问题。我在IE的setAttribute bug也提到其解决方法,一是innerHTML,一是IE特别的creatElement使用方法,不过都是要求在生成DOM时一同搞定name属性,这种在DOM生成后再修改name属性的方法真是高明啊。
介绍一下mergeAttributes 方法。它有两个参数oSource与 bPreserve :
mergeAttributes方法能把oSource 对象的所有属性,包括自定义属性,依附在其上面的事件与样式都复制过,在 IE5.0 及之前的版本中,只读属性不会被复制。如 id 属性。 在 IE5.5+ 中,通过设置 bPreserve 参数值为 false ,可以使 oSource 的所有属性被复制到 调用此方法的对象上 ,包括id属性和 name属性。
下面是一个完美的设置属性的方案
介绍一下mergeAttributes 方法。它有两个参数oSource与 bPreserve :
mergeAttributes | |
---|---|
oSource | IE5.0 必选项。对象(Element)。指定属性要被复制到 object 的对象。 |
bPreserve | IE5.5 可选项。布尔值(Boolean)。 false : 不保护目标对象的身份属性(id,name)。 true : 默认值。保护目标对象 object 的身份属性。 |
//下面代码会把新生成的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; } } }
相关文章推荐
- 利用name或id属性设置页面跳转的锚点
- 由于缺少调试目标,无法开始调试。请生成项目并重试,或者相应的设置OutputPath和AssemblyName属性,使其指向目标程序集的正确位置。
- 利用unity3d属性来设置Inspector面板的特殊行为
- Gridview利用DataFormatString属性设置数据格式
- Gridview利用DataFormatString属性设置数据格式
- Flex中如何利用getTabAt函数遍历TabNavigator容器的各个Tab,并且通过labelPlacement属性设置标签位置
- javascript createElement()创建input不能设置name属性的解决方法
- IE中document.createElement的iframe无法设置属性name问题
- 在唯一密钥属性“name”设置为“Session”时,无法添加类型为“add”的重复集合项
- TStrings可以存储L(Label)V(Value)形式的数据,用NameValueSeparator属性设置分隔符
- 在唯一密钥属性“name”设置为“ExtensionlessUrlHandler-Integrated-4.0”时,无法添加类型为“add”的重复集合项
- 【转】在配置使用Membership或其他的Providers的ASP.NET2.0时一定要设置applicationName属性。
- Gridview利用DataFormatString属性设置数据格式的方法
- 利用Hibernate Interceptor回调机制 统一设置数据表的共通属性
- 由于缺少调试目标“……”,Visual Studio无法开始调试。请生成项目并重试,或者相应地设置OutputPath和AssemblyName属性,使其指向目标程序集的正确位置
- 利用javascript协议来减少简化FRAME SRC属性的设置
- c#程序运行报错提示相应的设置outputpath和assemblyname属性的问题解决办法!
- 利用File Input控件修改name属性
- IIS下系统部署,提示错误:在唯一密钥属性“name”设置为“Ajax”时,无法添加类型为“add”的重复集合项
- 利用注册表设置Microsoft Office Document Image Writer在Office中的打印属性