getElementsByName方法的出身
来源:互联网 发布:数据字典缓存的作用 编辑:程序博客网 时间:2024/05/08 07:38
原文:http://yanni4night.com/2014/04/29/getelementsbyname-in-document/
@2014-04-29
@keywords:document,nodelist,getElementsByName,getElementsByClassName,getElementsByTagName
定义
在几个 getElementsBy*
方法中,getElementsByName
算是比较特殊的,表面上看即只有它不能在 Element
上调用。
W3C 将该方法定义在 HTMLDocument 接口中:
interface HTMLDocument : Document { attribute DOMString title; readonly attribute DOMString referrer; readonly attribute DOMString domain; readonly attribute DOMString URL; attribute HTMLElement body; readonly attribute HTMLCollection images; readonly attribute HTMLCollection applets; readonly attribute HTMLCollection links; readonly attribute HTMLCollection forms; readonly attribute HTMLCollection anchors; attribute DOMString cookie; void open(); void close(); void write(in DOMString text); void writeln(in DOMString text); NodeList getElementsByName(in DOMString elementName);};
按照此定义, getElementsByName
方法应该仅存在于 HTMLDocument
中而非 Document
中。在能够访问 Document
接口的浏览器(Opera,Chrome,Firefox,Safari和 Internet Explorer 10)中,测试下列代码:
!!Document.prototype.getElementsByName
结果如下:
分别观察一下 Gecko 和 Webkit 关于 (HTML)Document
部分的 IDL :
//Gecko 中 HTMLDocument.webidl 文件interface HTMLDocument : Document { NodeList getElementsByName(DOMString elementName);};//Webkit 中 Document.idl 文件interface Document : Node { NodeList getElementsByName([Default=Undefined] optional DOMString }
可见两者将 getElementsByName
定义在了不同的接口中,似乎 Gecko 的做法更符合 W3C 规范。
对此的解释可能是 Webkit 和 Internet Explorer
按照 whatwg 的 HTML5 草案进行了实现。
返回类型
关于 getElementsBy*
方法的返回类型,whatwg 规定为 HTMLCollection
, W3C 规定为 NodeList
。HTMLCollection
和 NodeList
两者很类似,都有 length 属性,都可以用数字索引或 item()
方法方位其中元素。但其差异也是明显的,前者成员为 HTMLElement
,而后者为 Node
,前者拥有 namedItem()
方法。现代浏览器对其实现不一致:
显然应该退化到 Node
和 NodeList
进行编程,避免依赖特定的类型返回值。
- getElementsByName方法的出身
- getElementsByName 兼容IE FF的方法
- DOM的getElementById()、getElementsByName()、getElementsByTagName()方法
- 出身
- 9. Document getElementsByName() 方法
- 9-2getElementsByName()方法
- Dom4j递归解析XML实现JS的getElementsByName类似方法
- Dom4j递归解析XML实现JS的getElementsByName类似方法
- 【分享】【js中的document.getElementsByName()方法的使用】
- document 方法:getElementsByName()与getElementById()、getElementsByTagName()的区别
- 程序员 出身的 成熟标志
- 我的出身与经历
- document.getElementsByName()的用法
- getElementsByName 的疏忽
- 关于getElementsByName("")的使用
- 关于getElementsByName("")的使用
- JS的getElementsByName()
- document.getElementsByName()的用法
- Windows使用Xmanager远程登录Centos方法
- 百钱百鸡
- HTTP协议的Connection头
- 编译器、操作系统、CPU相关的预处理宏定义
- 16周课后自主-项目1-数组排序(指针)
- getElementsByName方法的出身
- ListView的动态刷新问题——用notifyDataSetChanged没作用
- 很方便的IP查询接口:淘宝IP地址库
- gnu-linker 译文一
- LeetCode练习一:Single Number
- 利用flexbox构建可伸缩布局
- poj 1459 zoj 1734 Power Network(最大流)
- IE11 - Javascript 无法取得嵌套弹出框的返回值 - KB3008923
- 如何查看linux系统是32位还是64位