IE下创建有name属性的节点
在HTML标签中,时常需要用到标签iframe, inpute与form,这三个都拥有属性`name`,一般情况下,不需要动态创建这样些标签。
然 而通过JavaScript生成的应用程序,需要创建这样一个拥有`name`属性的标签。是的,可以通过document.createElement 创建节点,然后赋予属性`name`值。事实应该是这样的,不过IE有些让人失望,这样赋值的`name`值无法通过 document.getElementsByName('input name')引用,也不能用document.forms['form name'].elements['input name']的方式引用。不过IE提供了另外一种方式创建节点:
// 查看Microsoft: createElement Method
document.createElement('<tag attribute="value">');
这个方式不兼容于非IE浏览器,创建时需要进行浏览器检查。
创建form时,Hangring的做法是,`name`,`method`,`enctype`三个属性一同在标签中创建;一般赋值方式,会导致IE无法上传文件。
另 外,对于何时用document.getElementsByName方法,这样看哪些标签拥有`name`属性。在合适的标签用 document.getElementsByName,而其它的用document.getElementById,避免混淆。因为在IE下,前一个方 法如果取不到`name`,会去取`id`的值,程序达到一定规模,将是个噩梦,而且这样的方式根本不兼容其他浏览器。
创建input标签后,首先应设置属性`type`,然后再调用appendChild()方法,IE不支持添加到节点树后改变input类型。
然 而通过JavaScript生成的应用程序,需要创建这样一个拥有`name`属性的标签。是的,可以通过document.createElement 创建节点,然后赋予属性`name`值。事实应该是这样的,不过IE有些让人失望,这样赋值的`name`值无法通过 document.getElementsByName('input name')引用,也不能用document.forms['form name'].elements['input name']的方式引用。不过IE提供了另外一种方式创建节点:
// 查看Microsoft: createElement Method
document.createElement('<tag attribute="value">');
这个方式不兼容于非IE浏览器,创建时需要进行浏览器检查。
创建form时,Hangring的做法是,`name`,`method`,`enctype`三个属性一同在标签中创建;一般赋值方式,会导致IE无法上传文件。
另 外,对于何时用document.getElementsByName方法,这样看哪些标签拥有`name`属性。在合适的标签用 document.getElementsByName,而其它的用document.getElementById,避免混淆。因为在IE下,前一个方 法如果取不到`name`,会去取`id`的值,程序达到一定规模,将是个噩梦,而且这样的方式根本不兼容其他浏览器。
创建input标签后,首先应设置属性`type`,然后再调用appendChild()方法,IE不支持添加到节点树后改变input类型。
0 TrackBacks
Listed below are links to blogs that reference this entry: IE下创建有name属性的节点.
TrackBack URL for this entry: http://www.tracesoul.com/mt-tb.cgi/26

Leave a comment