首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

为何这样不能document.getElementById("form1").getElementsByName("a"

2013-08-04 
为什么这样不能document.getElementById(form1).getElementsByName(a)document.getElementById(form

为什么这样不能document.getElementById("form1").getElementsByName("a");
document.getElementById("form1").getElementsByName("a");
这样是不允许的,程序运行到这行会终止

document.getElementById("form1").getElementsByTagName("input");
这样却是允许的。

这是为什么,按照js的继承理论,form做为doc的子元素,应该能继承原型的所有特性,为何这里不行
我查了很多地方也没查出getElementsByName和getElementsByTagName这两个函数的限制区别


[解决办法]
document.getElementById("form1").getElementsByName("a");

等于
var eElementObj=document.getElementById("form1");
var x=eElementObj.getElementsByName("a");

而getElementsByName是属于docoment对象的方法。element对象的方法有:
https://developer.mozilla.org/en-US/docs/Web/API/element?redirectlocale=en-US&redirectslug=DOM%2Felement

我推荐你看看这本书<<javascript DOM编程艺术>>
[解决办法]
不好意思
我刚回头想了下 前面回答的太草率了
又具体看了
实际是这样的
HTMLFormElement.prototype.__proto__=HTMLElement
HTMLElement.prototype.__proto__=Element
Element.prototype.__proto__=Node

HTMLDocument.prototype.__proto__:=Document
Document.prototype.__proto__:=Node 
Node.prototype.__proto__=Object

===============Element
__proto__: Element
getElementsByClassName: function getElementsByClassName() { [native code] }
getElementsByTagName: function getElementsByTagName() { [native code] }
getElementsByTagNameNS: function getElementsByTagNameNS() { [native code] }
hasAttribute: function hasAttribute() { [native code] }

===========Document================
__proto__: Document
getCSSCanvasContext: function getCSSCanvasContext() { [native code] }
getElementById: function getElementById() { [native code] }
getElementsByClassName: function getElementsByClassName() { [native code] }
getElementsByName: function getElementsByName() { [native code] }
getElementsByTagName: function getElementsByTagName() { [native code] }
getElementsByTagNameNS: function getElementsByTagNameNS() { [native code] }


getOverrideStyle: function getOverrideStyle() { [native code] }
====================================

有公共超类 node

他们都自己单独 定义了 getelement 方法
但是  Document.prototype 独立定义了 方法   getElementsByName


热点排行