사용자 이벤트에 따라 모든 div
요소 내부의 첫번째 문단을 찾아 배경색을 노란색으로 바꾸고 싶다.
var paras = document.querySelectorAll('div p:first-of-type');
for(var i=0; i<paras.length; i++){
paras[i].setAttribute("style", "background-color:#ffff00");
}
다음과 같이 가상 선택자 문법을 사용하지 않는 방법도 있다.
var divs = document.querySelectorAll("div");
for(var j=0; j<divs.length; j++){
var ps = divs.item(j).getElementsByTagName("p");
if(ps.length>0){
ps[0].setAttribute("style", "background-color:#ffff00");
}
}
대부분의 브라우저는 :first-of-type
을 지원하지만 IE8은 지원하지 않느다. IE8은 :first-child
를 지원하지만 첫번째 요소는 문단이 아닐 수도 있다. 그래서 getElementsByTagName
을 사용해서 모든 요소를 찾고 문단에 접근할 수 있다.
다음 예제 코드는 선택자 문법이 지원되지 않을 경우 대비책을 제공하기 위해 try...catch
블록을 포함하고 있다.