Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub

##S010-实现类似getElementsByClassName的功能

#实现一个函数,查找某个DOM节点下面的包含某个class的所有DOM节点,不允许使用原生的getElementsByClassName

querySelectorAll等原生提供DOM查找函数。

function queryClassName(node, name) {
	var starts = '(^|[ \n\r\t\f])',
		ends = '([\n\r\t\f]|$)';
		
	var array = [],
	    regex = new RegExp(starts + name + ends),
		elements = node.getElementsByTagName("*"),
		length = elements.length,
		i = 0,
		element;
	
	while (i < length) {
		element = element[i];
		if(regex.test(element.className)) {
			array.push(element);
		}
		
		i += 1;
	}
	return array;
}

方式2:

function getAllClassName(attr) {
	let  arr = [];
	let  doms = document.getElementsByTagName("*");
	 for(var i = 0; i < doms.length; i ++) {
		 if(doms[i].className == attr || doms[i].className.indexof(attr + " ") != -1 || doms[i].className.indexOf(" " +attr+ " ") != -1) {
			 arr.push(doms[i])
		 }
		 return arr;
	 }
	 
	 var classNames = getAllClass('ykactive');
	 for(let i = 0; i < classNames.length; i ++) {
		 classNames[i].style.background= 'orange'
	 }
}

//未完待续。。

Edit this page
最近更新: 2025/12/2 01:46
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人