我想知道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;
答案 0 :(得分:0)
您可以在this doc中找到Document
,Node
和Element
的描述,以及here中HTMLDocument
的描述。
Document
界面表示浏览器中加载的任何网页,并充当网页内容(即DOM树)的入口点。
Node
是一个接口,各种类型的DOM API对象都从该接口继承。
Element
是Node
的一种。它仅具有所有元素共有的方法和属性。
HTMLDocument
接口扩展了Window.HTMLDocument
属性,以包括特定于HTML文档的方法和属性。
此外,如果您只想在IE 8中使用类似getElementsByClassName
的东西,我认为最简单的方法是使用document.querySelectorAll('.classname')
作为替代。有关此方法的更多信息,您可以参考this article。