我想知道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
、Node
和Element
的描述,以及HTMLDocument
的描述。
-
Document
接口表示浏览器中加载的任何网页,并作为网页内容(即DOM树(的入口点。 -
CCD_ 15是各种类型的DOM API对象继承的接口。
-
CCD_ 16是CCD_。它只有所有类型的元素通用的方法和属性。
-
HTMLDocument
接口扩展了Window.HTMLDocument
属性,以包括特定于HTML文档的方法和属性。
此外,如果您只想在IE 8中使用类似getElementsByClassName
的东西,我认为最简单的方法是使用document.querySelectorAll('.classname')
作为替换。有关此方法的更多信息,您可以参考本文。