Study JS for me/Algorithm

recursion 예제연습4

be well 2019. 5. 7. 15:25
var getElementsByClassName = function(className){
  // 먼저 인자로 받는 className과 동일한 이름에 class이름을 가진 것을 찾아서
  // 그 class이름과 동일한 class를 가진 것들을 빈 배열에 담아보자.
    
  var result = [];  // 빈배열 생성

    function check(elements){  // elements는 class이름을 확인할 장소 ex) div , span 등등
        if ( elements.classList){ // 그 장소에 class를 가진 게 존재한다면
          if (elements.classList.contains(className)){ // 그 클래스에 인자로 받는 className이 있으면
            result.push(elements); // 빈 배열에 넣어준다.
          }
        } 
        if( elements.hasChildNodes() ){ // 그 장소가 자식노드를 가지고 있다면
          for ( var i = 0 ; i < elements.childNodes.length ; i ++)
            check(elements.childNodes[i]); //각 자식노드를 check함수를 재귀해서 실행
        }
      }check(document.body); // 바디태그를 인자로 check함수를 재귀 
  return result;
  }

재귀를 통해 자식노드를 똑같이 check 함수에 넣어서 실행하는 예.