解决在dom对象中没有getElementsByClassName

作者:norion时间:2013年5月25日评论次数:0 条

在现在浏览中我们可以直接用document.getElementsByClassName(“class”),但在ie8以下,dom对象没有getElementsByClassName这个方法,document.getElementsByTagName这个函数是获取指定node,是不能达到你要的效果的。

那有什么办法能做到向下兼容,当然是自己写一个呗,万恶的ie,为了兼容我们要做太多事情了,早点干掉ie吧

/**
 * 根据className(类名)获取元素(返回的是一个HTMLCollection)
 * @param {String}
 * @param {Element} [root] 可选,从哪个根节点查找
 * @return {[Element]|Null}
 */
getElemsByClassName :function(className, root, tagName) {
	root = root || document; //没有传入根节点,则默认为document
	tagName = tagName || '*'; //没有传入标签,则默认获得所有标签
	var i = 0,
		classElements = [],
		elements = root.getElementsByTagName(tagName),
		elementsLen = elements.length;
		pattern = new RegExp('(^|\\s)' + className + '(\\s|$)');//className为传入的参数
	//遍历所有的元素,如果匹配到传入元素的className,则把对应的元素添加到数组中并返回
	for (; i < elementsLen; i++) {
		if (pattern.test(elements[i].className)) {
			classElements.push(elements[i]);
		}
	}
	return classElements;
};

标签:

上一篇: javascript精确判断数据类型

下一篇:jquery2.0放弃ie9以下的版本,亲你准备好了吗

相关文章

评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注