달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

여러 엘리먼트들을 한꺼번에 받아오려고 getElementById()에 document.getElementById('*').style.background ="#FFFFFF";

이런식으로 와일드카드를 쓸 수 없나 조사를 했더니 getElementById는 하나의 엘리먼트값만 받기 때문에 불가능하다는 것.
 와일드 카드를 쓸 수 있는 건 getElementsByTagName 밖에 없는 듯.

여러 클래스들의 엘리먼를 받아오는 메소드는 있다는 말을 듣고 클래스쪽으로 전환.
 메소드명은 getElementByClass가 아니라 getElementsByClassName 이다.

사용법은
 document.getElementsByClassName(className [, parentElement])
  인수: className = 클래스명, parentElement = 부모엘리먼트


'main' ID를 갖고있는 엘리먼트 내에서 'test'클래스를 갖고있는 엘리먼트의 모두를 얻음
  document.getElementById('main').getElementsByClassName('test')

'test' 클래스 내의 모든 노드들을 취득해, id 엘리먼트값을 추출
  var firstSlot = document.getElementsByClassName("test");
  if(firstSlot[0]){
    var nodes = firstSlot[0].childNodes;
    var id = nodes[0].id;
  }

더나아가 JavaScript 1.6의 배열 확장을 더해서 사용해보면,

'test'클래스를 가지고 있는 div 엘리먼트의 모두를 얻음
  Array.filter( document.getElementsByClassName('test'), function(elem){
    return elem.nodeName == 'DIV';
  });

'test'클래스를 가지고 있는 요소의 모두를 얻음(부모엘리먼트도 포함)
  var test = document.getElementsByClassName('test');
  Array.filter( test, function(elem){
    return Array.indexOf( test, elem.parentNode ) > -1;
  });


 또한, 직접 메소드를 만들어서 사용하는 것도 가능.
 getElementsByTagName을 사용해서 태그 네임을 받아온 후 체크를 해서 오브젝트를 얻어낸다.
 

function getElementsByClass(searchClass, node, tag) {
  var classElements = new Array();
  if ( node == null ) node = document;
  if ( tag == null ) tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i=0, j=0; i < elsLen ; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j++] = els[i];
    }
  }
  return classElements;
}
출처 : http://gimmehide.tistory.com/228


'Dev Language > JAVASCRIPT' 카테고리의 다른 글

javascript JS 호출(import)  (0) 2015.06.02
javascript 쿠키 셋팅,추출  (0) 2015.06.02
JAVASCRIPT 날짜 사용하기  (0) 2015.04.07
JAVASCRIPT PARAM 값 가져오기  (0) 2015.03.19
PC, MOBILE, TABLET 디바이스타입 파악  (0) 2015.03.17
Posted by 타카스 류지
|