`

IE 中document.getElementsByName

阅读更多

IE 中使用 document.getElementsByName 与 Firefox 中的不同。

对于 A、APPLET、BUTTON、FORM、FRAME、IFRAME、IMG、INPUT、OBJECT、MAP、META、PARAM、TEXTAREA、SELECT 元素

IE 的 document.getElementsByName(e) 会获取 name 属性值为 e 的元素,同时也会获取 id 属性值为 e 的元素。

对于其他元素

IE 的 document.getElementsByName(e) 只会获取 id 属性值为 e 的元素。

 

替代方法

function $tagByAttribute(tag,attr,value){
	return Moogens.Utilities.arrayMap($TagN(tag||'*'),function(el,i){
		return el.getAttribute(attr) == value ? el : null; 
	});
}

在IE中还有一个特殊点就是:IE中div和table等元素没有name属性,使用document.getElementsByName。得不到任何值,切记!


解决办法:
  1、元素命名id和name在一个页面中最好都不要相同(避免IE混淆id和name的bug)
  2、div和table等元素结合id和document.getElementsByTagName来使用

 
分享到:
评论
2 楼 yhy0371 2011-05-06  
经验之谈呀,借鉴
1 楼 meepo3927 2011-05-06  
恩,值得注意

相关推荐

    document.getElementsByName和document.getElementById 在IE与FF中不同实现

    ^) 但是对于document.getElementsByName 与document.getElementById 这个两个方法,IE中是并没有严格区分 ID 与 Name 的,比如: [removed] function useGetElementsByNameWithId(id) { var eles = d

    document.all还是document.getElementsByName?

    代码如下:(wuhen注:document.all是ie特有的属性,不是万维网标准) 当页面上的控件同名且多个的时候,你首先做的是什么?判断长度?的确,从程序的严密角度出发,我们是需要判断长度,而且有长度和没长度是两种引用方法....

    IE中getElementsByName()对有些元素无效的解决方案

    注意:在IE下有些节点是没有name 属性的,就是用document.getElementsByName获取不到的。只有下面的tag有name属性: A, APPLET, attribute, BUTTON, EMBED, FORM, IMG, INPUT type=button, INPUT type=checkbox, ...

    JS:document.all的用法

    然而,需要注意的是,`document.all`在标准浏览器中可能不受支持,因此在实际项目中,更推荐使用`document.getElementById`、`document.getElementsByName`等标准方法来访问DOM元素,以确保代码的兼容性和可维护性。

    innerHTML 和 getElementsByName 在IE下面的bug 的解决

    getElementsByName方法是Document对象的一个方法,它返回文档中所有具有指定name属性的元素组成的HTMLCollection集合。它通常用于获取表单元素,如input或button,或者用于获取具有特定name属性的其他元素。 #### ...

    document.all与getElementById、getElementsByName、getElementsByTagName用法区别-document.all第1/2页

    总结来说,`document.all`是一个非标准的方法,尽管在旧版本的IE中常见,但不应在新代码中使用。`getElementById`、`getElementsByName`和`getElementsByTagName`则是标准的DOM操作方法,分别用于根据ID、name属性和...

    document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById

    在处理跨浏览器兼容性时,开发者应尽量避免依赖`document.all`,并确保使用`getElementById`时,ID是唯一的,以避免IE中的特殊情况。对于其他选择元素的方法,根据具体需求选择合适的方法,如需要选取一组元素,`...

    脚本中Document对象内容集合介绍

    在旧版本的IE浏览器中使用,但在现代浏览器中已被`window.getSelection()`取代。 除了上述内容,`Document`对象还有其他很多功能,例如`document.getElementsByTagName()`, `document.getElementsByName()`, `...

    Document和Document.all区别分析

    如果不在表单内,`inputName` 可能能直接引用,否则就要借助 `document.getElementById` 或 `document.getElementsByName`。 此外,对于具有ID的元素,如 `<div id="aa">`,我们通常使用 `document.getElementById...

    document.all与WEB标准

    然而,`document.all`是一个不符合这些标准的特性,它是微软在Internet Explorer(IE)中引入的一个私有DOM扩展。DOM,即Document Object Model,是一个标准化的模型,用于表示HTML或XML文档的结构,并提供了一种...

    JS的document.all函数使用示例

    但请注意,这种方法在非IE浏览器中不适用,应该使用`document.getElementsByName("name")[index]`。 3. **推荐的替代方法**:为了避免兼容性和错误问题,建议使用标准的DOM方法。例如,使用`document....

    javascript 的Document属性和方法集合

    - `document.selection`: 在旧版的IE浏览器中,这个对象用于处理用户选择的文本。在现代浏览器中,应使用`window.getSelection()`来获取选区信息。 以上是`Document`对象及其相关属性和方法的基本概述。理解和熟练...

    IE 与FireFox 区别概要总结

    - IE支持`document.all.month.value`,但Firefox要求使用`document.getElementsByName("month")[0].value`或`document.getElementById("month").value`。推荐使用`getElementById`以保持兼容性。 6. HTML对象ID...

    Javascript的IE和Firefox兼容性参考

    - 在IE中,可以通过`document.formName.item("itemName")`来访问表单元素,但在Firefox中不支持。推荐使用标准的方法`document.formName.elements["elementName"]`。 2. **集合类对象问题** - 集合类对象如forms...

    火狐和IE支持javaScript脚本的一些区别

    在IE中,可以使用`document.forms("formName")`或`document.forms["formName"]`来访问表单。而`document.getElementsByName("inputName")(1)`则返回名为`inputName`的第二个元素。在Firefox中,推荐使用数组下标的...

    javascript的document对象

    - **document.getElementsByName(Name)**:根据给定的name属性值查找页面中的一个或多个元素。 - **document.body.appendChild(oTag)**:将一个HTML元素追加到`<body>`元素的子节点列表中。 #### Body元素属性 - *...

    前段JS开发和DOM兼容问题大全

    8. IE浏览器中`getElementsByName`和`document.all[name]`不能用来取得div元素,这一点在编写兼容性代码时需要特别注意。 9. 对于table标签的操作,IE浏览器不允许对其和tr元素的innerHTML属性赋值,且使用...

Global site tag (gtag.js) - Google Analytics