document.getElementById("form1").getElementsByName("a");
这样是不允许的,程序运行到这行会终止document.getElementById("form1").getElementsByTagName("input");
这样却是允许的。这是为什么,按照js的继承理论,form做为doc的子元素,应该能继承原型的所有特性,为何这里不行
我查了很多地方也没查出getElementsByName和getElementsByTagName这两个函数的限制区别
这样是不允许的,程序运行到这行会终止document.getElementById("form1").getElementsByTagName("input");
这样却是允许的。这是为什么,按照js的继承理论,form做为doc的子元素,应该能继承原型的所有特性,为何这里不行
我查了很多地方也没查出getElementsByName和getElementsByTagName这两个函数的限制区别
re:
js的继承跟dom树有关系吗?
re:
elements = element.getElementsByTagName(tagName)
elements = document.getElementsByName(name) 同学好好看看怎么没区别
getElementsByTagName是element对象的方法
getElementsByName是document对象的方法这没看出来
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编程艺术>>
function HTMLFormElement() { [native code] }document.constructor
function HTMLDocument() { [native code] } 从这里可以看出 form 和 document 没有继承关系
我刚回头想了下 前面回答的太草率了
又具体看了
实际是这样的
HTMLFormElement.prototype.__proto__=HTMLElement
HTMLElement.prototype.__proto__=Element
Element.prototype.__proto__=NodeHTMLDocument.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