2012-12-01 3 views
6

가능한 중복 :
document.all vs. document.getElementByIddocument.all의 의미는 무엇입니까?

나는 다른 사람에 의해 쓰여진 오래된 코드를 리팩토링하고있다. 그리고 다음 스 니펫을 발견했습니다.

if (document.all || document.getElementById) { 
    ... 
} 

if 문 내의 코드는 언제 실행됩니까?

감사합니다.

+1

이 질문과 대답 읽기 : http://stackoverflow.com/questions/2408424/document-all-vs-document-getelementbyid –

+0

**'document.all' ** 및 **'document.getElementById' 사용 * * 매개 변수없이 * 해당 브라우저에서 지원되는 경우 "true"를 반환합니다. 따라서 "if"는 **'document.all' **가 지원되면 실행될 것입니다 :''IE 4 -> 10 "', 일부 버전의''Opera '', 그리고 아마도 다른 것들; ** 또는 **'document.getElementById' **가 지원되는 경우 : "IE 5 이상", "Netscape 6 이상"및 아마도 모든 최신 버전의 "Firefox", "Chrome" "Safari"등 "if"는 IE "4", ""Netscape <6 "'및 대부분의 다른 브라우저의 아주 오래된 버전에서 실행되지 않습니다. –

+0

사실, 그건 거짓입니다. 요즘,'document.all'은 여전히 ​​객체 임에도 불구하고 이전 버전과의 호환성을 이유로 거짓입니다. 예를 들어,'console.log (!! document.all, document.all.length)'를 실행하면'false 1059'가 출력됩니다. – Antimony

답변

7

document.all()은 DOM 요소에 액세스하는 비표준 방식입니다. 일부 브라우저에서는 지원이 중단되었습니다. 문서의 모든 하위 요소에 대한 액세스 권한을 제공합니다.

document.getElementById()는 표준이며 완벽하게 지원됩니다. 각 요소는 문서에서 고유 한 ID를가집니다.

+2

매우 다른 답변을하고 참조 용으로 추가 할 때를 제외하고는 다른 답변에 대한 설명은 주석으로 작성해야합니다. 답변을 주셔서 감사합니다. –

+0

답장을 보내 주셔서 감사합니다. 그러나 언제 if 문 내의 코드가 정확히 실행됩니까? 내 경우에는'document.all'과'document.getElementById' 모두'div1'과 같은 매개 변수를 가지고 있지 않습니다. – user1170330

+0

@ user1170330 : 제대로 이해하면 브라우저에서 자바 스크립트가 켜져 있으면 실행됩니다. 또한, [여기] (http://javascript.about.com/od/hintsandtips/a/worst_4.htm)을 읽은 것처럼, IE4의 경우 처음 인 것 같습니다. 그래서, 만약 당신이 코드에서 벗어나 다른 사용자가 자신의 브라우저에서 JS를 사용할 수 있는지 확인하기 위해 다른 것을 사용한다면 (예를 들어