현재 element 에서 이전 또는 이후 element 를 접근 하려고 할때 

previousSibling
nextSibling 

2가지 를 사용해서 가져오려고 하지만 html element 가 아닌 #text가 호출될때가 있다.

원인은 element 사이에 whitespace(공백)으로 인해서 값을 제대로 못가져오게 된다. 

아래 샘플 html 코드에서 현재 2번에서 3번을 접근하려고 할때

<li>
    <a id ="1" >test1</a>
    <a id ="2" >test2</a>
    <a id ="3" >test3</a>
    <a id ="4" >test4</a>
</li>

 

var temp = document.getElementById('2');
console.log(temp.nextSibling); // #text

nextSibling은 id값이 3인 element 를 접근 못하고 #text를 가져온다.

해당 문법을 정상적으로 사용하려면 아래처럼 공백을 제거해야된다.

 

<li>
  <a id ="1" >test1</a><a id ="2" >test2</a><a id ="3" >test3</a><a id ="4" >test4</a>
</li>

 

하지만 이런 방법은 좋은게 아니기 때문에 whitesapce(공백)을 무시하면서 다음 element를 접근하는 

nextElementSibling 을 사용하면 된다. 

var temp = document.getElementById('2');
console.log(temp.nextElementSibling); // <a id ="3" >test3</a>

그럼 공백이 있어도 다음 element를 접근하고

형제 엘리먼트가 더이상 없을때 null을 return한다. 

+ Recent posts