문제

을 사용해야 하는 경우 document.alldocument.getElementById?

도움이 되었습니까?

해결책

document.all W3C 표준에 대한 독점적 인 Microsoft 확장입니다.

getElementById() 표준입니다 - 그것을 사용하십시오.

그러나 JS 라이브러리를 사용하는 경우 고려하십시오 jQuery 유용 할 것입니다. 예를 들어, $("#id") jQuery는 동일합니다 getElementById(). 또한 사용할 수 있습니다 단순한 CSS3 이상 선택기.

다른 팁

document.all ~이다 매우 늙은 너 더 이상 사용할 필요가 없습니다.

인용합니다 니콜라스 자카스:

예를 들어, DOM이 젊었을 때 모든 브라우저가 GetElementById ()를 지원하는 것은 아니므로 다음과 같이 보이는 많은 코드가있었습니다.

if(document.getElementById){  //DOM
    element = document.getElementById(id);
} else if (document.all) {  //IE
    element = document.all[id];
} else if (document.layers){  //Netscape < 6
    element = document.layers[id];
}

실제로, document.all최소document.getElementById.당신이 사용하지 않을 것이 하나의 장소에서,그들은 반환 하지 않는 동일한 것들입니다.

하려는 경우 필터링을 통해 브라우저 기능을 사용할 수 있습으로 그들을 에 마르셀 Korpel 의 응답 다음과 같다:

if(document.getElementById){  //DOM
    element = document.getElementById(id);
} else if (document.all) {    //IE
    element = document.all[id];
} else if (document.layers){  //Netscape < 6
    element = document.layers[id];
}


하지만,기능, document.getElementsByTagName('*') 가 더 해당하는 document.all.

는 경우,예를 들어,당신은 당신이 실제로 사용하는 것 document.all 을 검사하는 모든 요소로 페이지에서 다음과 같다:

var j = document.all.length;
for(var i = 0; i < j; i++){
   alert("Page element["+i+"] has tagName:"+document.all(i).tagName);
}

당신이 사용하는 것 document.getElementsByTagName('*') 대신:

var k = document.getElementsByTagName("*");
var j = k.length; 
for (var i = 0; i < j; i++){
    alert("Page element["+i+"] has tagName:"+k[i].tagName); 
}

document.all () DOM 요소에 액세스하는 비표준 방법입니다. 몇 개의 브라우저에서 더 이상 사용되지 않았습니다. 문서의 모든 하위 요소에 액세스 할 수 있습니다.

document.getElementById () 표준이며 완전히 지원됩니다. 각 요소는 문서에 고유 한 ID가 있습니다.

당신이 가지고 있다면:

<div id="testing"></div>

사용

document.getElementById("testing"); 

해당 특정 Div에 액세스 할 수 있습니다.

document.querySelectorAll (그리고 그것 document.querySelector() 첫 번째 발견 된 요소를 반환하는 변형)는 훨씬 더 강력합니다. 당신은 쉽게 할 수 있습니다 :

  • 전체 컬렉션을 받으십시오 document.querySelectorAll("*"), 효과적으로 비표준을 모방합니다 document.all 재산;
  • 사용 document.querySelector("#your-id"), 효과적으로 에뮬레이션 document.getElementById() 기능;
  • 사용 document.querySelectorAll(".your-class"), 효과적으로 에뮬레이션 document.getElementsByClassName() 기능;
  • 사용 document.querySelectorAll("form") 대신에 document.forms, 그리고 document.querySelectorAll("a") 대신에 document.links;
  • 다른 문서 내장으로 덮을 수없는 훨씬 더 복잡한 DOM 쿼리 (사용 가능한 CSS 선택기 사용)를 수행하십시오.

Unified Querying API가 갈 길입니다. 설사 document.all 표준에있을 것입니다. 그것은 단지 불편합니다.

구체적으로, document.all 이전에 IE4를 위해 도입되었습니다 document.getElementById 소개되었습니다.

그래서, 존재의 존재 document.all 코드가 의도 된 것을 의미합니다 IE4를 지원합니다, 또는 브라우저를 IE4로 식별하려고 시도하고 있습니다 (오페라 일 수도 있음) 또는 코드가 최신 정보를 얻지 못했습니다 (또는 복사 및 붙여 넣은 사람).

IE4를 지원해야 할 가능성이 거의없는 이벤트에서는 필요합니다. document.all (또는이 고대 IE 사양을 처리하는 라이브러리).

에 따르면 Microsoft의 보관 된 Internet Explorer Dev Center, document.all IE 11과 Edge에서 더 이상 사용되지 않습니다!

document.all Chrome에서 지금 작동하지만 (그 이후로 확실하지 않음) 지난 20 년 동안 누락되었습니다 .... 단순히 Clunky보다 짧은 방법 이름입니다. document.getElementById. 그것이 Firefox에서 작동하는지 확실하지 않지만, 그 사람들은 기존 웹과 호환되기를 원하지 않았으며, 기존 웹을 수용하는 대신 항상 새로운 표준을 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top