<ul id="contain"> <li><a href="http:/www.php.cn">Microsotf</a></li> <li><a href="http:/www.php.cn">Yahoo</a></li> <li><a href="http:/www.php.cn">Easy</a></li> <li><a href="www.php.cn">W3c/Javascript</a></li> <li><a href="www.php.cn">Design|Source</a></li> </ul> var container=document.getElementById("contain");
1. firstChild를 사용하여 ul 요소(텍스트 노드 및 HTML 요소 노드 포함) 아래의 첫 번째 하위 노드로 만듭니다. 따라서 표준에 따르면 Firefox 및 Opera의 예에서 Container.firstChild는 공백 텍스트 노드를 가져와야 합니다. IE는 이를 구현하지 않습니다. 텍스트 노드에 공백 문자만 포함되어 있으면 IE는 이를 직접 건너뜁니다. 따라서 IE에서 Container.firstChild를 통해 얻는 것은 li 요소 노드입니다.
2.firstChild는 요소의 모든 하위 노드(childNodes) 중 첫 번째 하위 노드입니다. 요소의 첫 번째 하위 노드가 변경되지 않으면 firstChild에 대한 참조도 변경되지 않습니다. 연속으로 두 번 얻은 firstChild는 동일한 객체입니다.
보충: 참조와 객체의 관계를 이해해야 합니다. firstChild는 요소의 첫 번째 하위 노드에 대한 참조입니다. 제공한 xx 함수에서 firstChild가 가리키는 객체를 상위 객체의 끝에 추가합니다. 원래 firstChild가 참조한 객체는 컨테이너 객체의 끝으로 이동하고 firstChild는 원래 순위가 두 번째였던 요소 객체를 가리킵니다. 주기가 이와 같이 계속되면 링크가 하나씩 뒤로 이동합니다.
<body> <ul id="action"> <li title="第一段文字">第一个</li> <li title="第二段文字">第二个</li> </ul> <script type="text/javascript"> var attr_p = document.getElementById("action"); alert(attr_p.childNodes[1].childNodes[0].nodeValue); </script> </body>
액션 ID를 사용하여 ul의 첫 번째 li에서 텍스트 노드를 가져오려면(예: 첫 번째 항목 가져오기)...childNodes[1].childNodes 메소드를 사용할 수 있습니다. [0].nodeValue 찾기, 첫 번째 li의 텍스트 노드를 찾으려면...childNodes[1].firstChild.nodeValue를 사용하십시오. 결론 childNodes[0]는 언제 어디서든 firstChild와 동일합니다. childNodes[] 배열의 첫 번째 요소에 액세스하면 이를 firstChild로 작성할 수 있으며 DOM도 해당 lastChild 속성을 제공합니다. ff의 공간 노드 문제의 경우 nodeType 속성을 사용하여 요소 노드를 찾을 때까지 노드 유형을 판단할 수 있다는 점에 유의해야 합니다.