문서입니다.모든 대문서입니다.getElementById
-
18-09-2019 - |
문제
을 사용해야 하는 경우 document.all
대 document.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에서 작동하는지 확실하지 않지만, 그 사람들은 기존 웹과 호환되기를 원하지 않았으며, 기존 웹을 수용하는 대신 항상 새로운 표준을 만듭니다.