我想知道document
,HTMLDocument
,Document
,Element
和Node
之间的关系,以实现IE8的getElementsByClassName
方法。但是,每当尝试这些方法时,它都无法正常工作: document.getElementsByClassName = function(){}
,HTMLDocument.getElementsByClassName=function(){}
或Element.prototype.getElementsByClassName=function(){}
。
if(!Element.getElementsByClassName) {
Element.prototype.getElementsByClassName = function(arg){
var cssSelector;
var parentElement = this.document||this.documentElement.document||document;
var queryElements = null;
if(arg){
if(arg.indexOf(' ')>0){
cssSelector = '[class~="'+arg+'"]';
}else{
cssSelector = "."+arg;
}
queryElements = parentElement.querySelectorAll(cssSelector);
}
return queryElements;
}
}
var elems = document.getElementsByClassName('limit').item(0);
var triangles = elems.getElementsByClassName('triangle');
debugger;
Document
界面表示浏览器中加载的任何网页,并且是网页内容(即DOM树)的入口点。Node
是从中继承各种类型的DOM API对象的接口。
Element
是Node
的一种。它仅具有所有元素共有的方法和属性。
HTMLDocument
接口扩展了Window.HTMLDocument
属性,以包括特定于HTML文档的方法和属性。
getElementsByClassName
之类的东西,我认为最简单的方法是使用document.querySelectorAll('.classname')
作为替代。有关此方法的更多信息,请参考this article。