Jump to content


Photo

Propriedade: All


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 Guilherme Blanco

Guilherme Blanco

    Loading...

  • Conselheiros
  • 891 posts
  • Sexo:Masculino
  • Localidade:São Carlos - SP/Brasil
  • Interesses:Programação Web e minha namorada (Maria Camila).

Posted 22/12/2003, 23:53

Valor: Array e objetos de elementos aninhados

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.
<script language="WebFórum">
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq