2012-10-02 4 views
1

디버그 관리자를 사용하여 ID가 ​​Foo 인 DOM 요소를 볼 수 있습니다.동적 DOM 요소에 액세스 할 수 없습니까?

이 DOM 요소는 내가 액세스 할 수없는 스크립트에 의해 동적으로 삽입됩니다.

보기 -> 소스를 볼 때 볼 수 없습니다.

내가

document.getElementById('Foo')를 사용하여 요소에 액세스하려고 할 때, 그것은 널 주전을 반환 그것을 찾을 수 없습니다.

디버그 콘솔에서도이를 확인했습니다.

동적으로 삽입되는 요소를 가져올 수 있습니까?

나는 bc.c. 노드를 제거하고 싶습니다.

+0

아마도 요소를 생성하기 전에 액세스하려고 시도했을 것입니다. – Musa

+0

아니요 페이지가 완전히로드 된 후 콘솔 디버거를 사용했습니다. –

답변

3

예, 당신은 할 수 있습니다

function addElement() { 
    var foo = document.createElement('p'); 
    foo.id = "bar"; 
    document.body.appendChild(foo); 
} 
function getElement() { 
    alert(document.getElementById('bar')); 
}  

addElement(); 
getElement(); 

a live demo of this 참조하십시오.

세부 정보를 제공하지 않아서 예제가 작동하지 않는 이유는 무엇입니까?

여러분이보고있는 요소가 iframe에 삽입 된 다른 문서에있는 것 같습니다.이 경우 getElementById을 호출하기 전에 access the document in the iframe을 사용해야합니다. 물론 이것은 the same origin policy의 적용을받습니다.

+0

전체적으로 축소 된 테스트 사례가 일반적으로 좋은 시작입니다. – Quentin

+0

내가 제안 했으므로 iframe의 다른 문서에 있습니다. 그 iframe은 다른 출처에 있기 때문에 그렇게 할 수 없습니다. (그리고 광고는 서비스를 제공하기 위해 취하는 "지불"이기 때문에 가능한 경우에도 사용하면 안됩니다). – Quentin

+0

대부분의 DOM 검사자는 iframe에 중첩 된 문서를 DOM의 일부로 표시합니다. 그들은 여전히 ​​다른 문서입니다. – Quentin

관련 문제