Tipo: Somente leitura
Compatibilidade:
IE4+
Opera
Descrição:
A propriedade all é um array de cada elemento HTML e (no IE5+) tag XML dentro do escopo do objeto atual. Os itens aparecem na ordem do código-fonte. Para os elementos HTML, a ordem o código-fonte depende da posição da tag de início para o elemento - as tags de fim não são contadas. Mas, para XML, as tags aparecem como itens separados no array.
Embora a referência document.all possa ser o uso mais comum, a propriedade all está disponível para qualquer elemento que possa ser um contêiner (possa conter outros elementos). Exemplo: document.forms[0].all expõe todos os elementos definidos dentro do primeiro formulário de uma página.
Você pode acessar diretamente qualquer elemento que possua um ID definido.
var parágrafo = document.all['meuP'];
Esqueci de mencionar que o array all é associativo, ou seja, ele pode percorrer tanto via número: document.all[0] como por strings document.all['meuP']. O IE também suporta ao invés do uso de colchetes, o uso de parênteses para capturar os elementos.
Devo mencionar que os IDs são únicos num documento... MAS, caso exista um caso extraordinário, onde exista mais de um elemento com o mesmo ID num mesmo documento, você pode acessá-lo assim:
var parágrafo2 = document.all('meuP', 1);
Onde o segundo parâmetro é o índice do array de elementos que possuem o mesmo ID, lembrando sempre que o array inicia-se com 0.
Como uma alternativa mais legível, você pode usar o método item() para acessar os mesmos tipos de itens dentro de uma mesma opção:
var parágrafo2 = document.all.item('meuP', 1);
Veja também o método tags(), como um meio de extrair um conjunto de elementos da coleção all que combine com um nome de tag específico.
Simulando a sintaxe do IE4 no NN6 e Mozilla
Você pode simular o comportamento da propriedade all no NN6 e Mozilla. É pela facilidade de acesso aos elementos (somente 1 nível), que faz com que este seja um modo tão conveniente de acessar qualquer objeto, no documento inteiro.
Eis o código:
if( ! document.all ) {
Node.prototype.__defineGetter__("all", function( ) {
if( document.getElementsByTagName("*").length ) {
switch( this.nodeType ) {
case 9:
return document.getElementsByTagName("*");
break;
case 1:
return this.getElementsByTagName("*");
break;
}
}
});
Node.prototype.__defineSetter__("all", function( ) { } );
}
Esta prototipação não deve ser executada em browser que já suportam uma propriedade document.all.
A função anônima primeiro estabelece um desvio no código somente para o modelo de objeto se ele aceitar o parâmetro curinga para o método document.getElementsByTagName(). A função realiza então extrações ligeiramente diferentes, dependendo se o nó é o documento (tipo 9) ou um elemento (tipo 1). Se a propriedade all tiver que ser consultada para qualquer outro tipo de nó, o valor retornado é uma string vazia. Toda vez que a propriedade all é acessada, a função anônima é executada para apanhar todos os elementos aninhados dentro do nó atual. Portanto, a coleção está sempre atualizada, mesmo que a estrutura do nó do objeto atual mudar após o carregamento do documento.
Desta forma, você poderá referenciar seus objetos utilizando document.all.elementId, mesmo estando o documento sendo carregado pelo Mozilla.










