programing

document.all 대 document.getElementById

copyandpastes 2021. 1. 17. 12:31
반응형

document.all 대 document.getElementById


언제 document.allvs. document.getElementById?


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

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

그러나 jQuery 와 같은 js 라이브러리를 사용하는 것이 유용한 지 고려하십시오. 예를 들어 $("#id")getElementById(). 또한 CSS3 선택기 이상을 사용할 수 있습니다 .


document.all이다 아주 오래된, 당신은 더 이상 사용할 필요가 없습니다 .

Nicholas Zakas 를 인용하려면 :

예를 들어, 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. 하나를 다른 대신 사용하지 않고 동일한 것을 반환하지 않습니다.

브라우저 기능을 통해 필터링하려는 경우 Marcel 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 선택기를 사용)를 수행합니다.

통합 쿼리 API를 사용하면됩니다. 기준이 되더라도 document.all불편할뿐입니다.


Specifically, document.all was introduced for IE4 BEFORE document.getElementById had been introduced.

So, the presence of document.all means that the code is intended to support IE4, or is trying to identify the browser as IE4 (though it could have been Opera), or the person who wrote (or copied and pasted) the code wasn't up on the latest.

In the highly unlikely event that you need to support IE4, then, you do need document.all (or a library that handles these ancient IE specs).


According to Microsoft's archived Internet Explorer Dev Center, document.all is deprecated in IE 11 and Edge!


document.all works in Chrome now (not sure when since), but I've been missing it the last 20 years.... Simply a shorter method name than the clunky document.getElementById. Not sure if it works in Firefox, those guys never had any desire to be compatible with the existing web, always creating new standards instead of embracing the existing web.

ReferenceURL : https://stackoverflow.com/questions/2408424/document-all-vs-document-getelementbyid

반응형