Pergunta

Quando você deve usar document.all vs. document.getElementById?

Foi útil?

Solução

document.all é uma extensão proprietária da Microsoft para o padrão W3C.

getElementById() é padrão -. Uso que

No entanto, considerar se usando uma biblioteca js como jQuery viria a calhar. Por exemplo, $("#id") é o equivalente jQuery para getElementById(). Além disso, você pode usar mais de seletores apenas CSS3 .

Outras dicas

document.all é muito de idade, você não tem que usá-lo mais .

Para citar Nicholas Zákas :

Por exemplo, quando o DOM era jovem, nem todos os navegadores suportados getElementById (), e por isso não era um monte de código que ficou assim:

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 () é uma forma não-padrão de acessar elementos DOM. Tem sido obsoleto de alguns browsers. Dá-lhe acesso a todos os elementos sub em seu documento.

document.getElementById () é um padrão e totalmente suportado. Cada elemento tem um ID único no documento.

Se você tem:

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

Usando

document.getElementById("testing"); 

Terá acesso a essa div específico.

document.querySelectorAll (e sua variante document.querySelector() que retorna o primeiro elemento encontrado) é muito, muito mais poderoso. Você pode facilmente:

  • começar uma coleção inteira com document.querySelectorAll("*"), emulando efetivamente propriedade document.all não-padrão;
  • uso document.querySelector("#your-id"), emulando efetivamente função document.getElementById();
  • uso document.querySelectorAll(".your-class"), emulando efetivamente função document.getElementsByClassName();
  • uso document.querySelectorAll("form") vez de document.forms e document.querySelectorAll("a") vez de document.links;
  • e executar qualquer muito mais complexa consulta DOM (usando qualquer seletor CSS disponível) que simplesmente não podem ser cobertos com outros builtins documentos.

Unificação API consulta é o caminho a percorrer. Mesmo se document.all seria no padrão, é apenas inconveniente.

Especificamente, document.all foi introduzido para IE4 ANTES document.getElementById tinha sido introduzido.

Assim, a presença de meios document.all que o código se destina para apoiar IE4 , ou está tentando identificar o navegador como IE4 (embora pudesse ter sido Opera), ou a pessoa que escreveu ( ou copiado e colado) o código não estava na mais recente.

No caso altamente improvável que você precisa para apoiar IE4, então, você precisa document.all (ou uma biblioteca que lida com esses antiga IE especificações).

De acordo com o arquivado Internet Explorer Dev Center da Microsoft, document.all está obsoleta no IE 11 e Edge!

document.all funciona em Chrome agora (não tenho certeza quando uma vez), mas faltou-lo nos últimos 20 anos .... Simplesmente um nome de método mais curto que o document.getElementById desajeitado. Não tenho certeza se ele funciona no Firefox, esses caras nunca teve nenhum desejo de ser compatível com a web existente, sempre criando novos padrões em vez de abraçar a web existente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top