要查找 DOM 中的某种节点元素,主要有 getElementById,getElementsByClassName,getElementsByTagName 和querySelectorAll 这几个方法可用。其中 getElementById 和 getElementsByTagName 方法各个浏览器都支持;而 getElementsByClassName 方法 IE9 之前不支持,querySelectorAll 方法 IE8 之前以及 Firefox 3.5 之前不支持。
在不支持 getElementsByClassName 方法的浏览器中可以自己编写函数来实现这个功能,例如:
function getElementsByClassName(node, classname) {
var a = [];
var re = new RegExp('(^| )'+classname+'( |$)');
var els = node.getElementsByTagName("*");
for(var i=0,j=els.length; i<j; i++)
if(re.test(els[i].className))a.push(els[i]);
return a;
}
但是此时得到的节点集合和用原生方法得到的节点集合还是有一点不同,就是它不会跟随 DOM 的变化而自动更新。
参考资料:
[1] W3C DOM Compatibility - Core - getting elements
[2] javascript document.getElementsByClassName compatibility with IE
[3] Your Favourite getElementsByClassName - Snook.ca