2014-02-14 4 views
0

MDN이 article을 방금 읽었으며 "document.getElementById"의 사양에 따르면에없는 요소는 검색되지 않습니다.문서 외부의 요소

요소가 문서 외부에있는 이유/방법에 혼란을 느낍니다. 이것이 절대 위치 요소의 정의와 어떻게 다른지 (즉, 절대 배치 된 요소는 문서 흐름에서 제거됩니다). 나는 절대적으로 배치 된 요소의 경우가 이것에 적용된다는 것을 완전히 확신하지는 못하지만, "문서 밖"이라는 것이 무엇을 의미하는지 그리고 그와 같은 것이 사용되는 이유에 대한 설명은 크게 감사 할 것입니다.

답변

3

문서는 나무이지만 트리에없는 노드 (잎/가지)를 가질 수 있습니다 (결코 없거나 떨어져 왔기 때문에).

예를 들어 명확하게 알 수 있습니다.

예 1 :

여기 모든 문서에없는 요소입니다 : : 전혀 트리에

id로, 요소,하지만이 모든 문서의 일부가 아닌
var elm = document.createElement('div'); 
elm.id = "foo"; 

.

예 2 :

HTML :

<body> 
<div id="foo"></div> 
</body> 

자바 스크립트 : 트리에서 제거

// The div is in the document, so this works: 
var elm = document.getElementById("foo"); 

// Now we remove it: 
elm.parentNode.removeChild(elm); 

// 'elm' is no longer in any document 
console.log(document.getElementById("foo")); // null 

Example 2 Live | 노드가 메모리에 존재하는, 즉 Source

+1

느슨한 요소에'id'를 추가하는 것이 좋습니다. 특히'getElementById'에 관한 것입니다. –

1

을 의미한다 "문서에하지", "현재 문서의 DOM 트리에 저장되지"하지만이 페이지에있는 모든 노드에 "연결"아니에요 .

그 중 corrollary은 요소가 보이지 않아야한다는 것이지만 절대 위치와는 완전히 다른 이유입니다. 후자의 경우 노드는 DOM에 존재하지만 "화면 상에"배치되지 않을 수 있습니다.

관련 문제