Dúvida com getElementById

2 respostas
A

Gente, eu sei que provavelmente é uma coisa besta, mas é que eu vi isso em um código e queria entender o funcionamento disso:

if(document.getElementById)
//Código aqui
else
//Código aqui

O que eu não entendi desse código, foi essa chamada do document.getElementById sem passar nenhum parâmetro nem nada.
Como que funciona essa função nesse caso?

Obrigado!

2 Respostas

E

Vou dar uma explicação comprida, mas você vai aprender de uma vez por todas.

Em JavaScript, todos os objetos podem ser vistos como “dicionários” (em Java seria algo parecido com “HashTable”), e o operador de busca no dicionário é o “.” mesmo.
Por exemplo, se você passar o nome “getElementById” para procurar dentro do objeto “document”, esse objeto “document” retorna um objeto “getElementById” que é um método e pode ser chamado com algum parâmetro, ou então simplesmente não acha (o tal do “undefined” do JavaScript).

Se um “if” receber um “undefined”, ele entende como “false”.

Ou seja, o programador na verdade está escrevendo isto aqui:

if (document.getElementById)  
{
    // Nesta versão do JavaScript que roda neste browser, 
    // existe o método getElementById, portanto posso usá-lo para fazer alguma coisa
}
 else  
{
    // Nesta versão do JavaScript que roda neste browser, 
    // não existe o método getElementById, portanto tenho de proceder de outra forma para achar um elemento
}
A

Certo, eu entendi agora, mas então uma outra coisa.
Esse código que eu tenho aqui, o cara usou essa maneira para fazer um menu retrátil (aqueles que expande e contrai, manja?), ai funciona assim, de acordo com a sua expliação:

if (document.getElementById) {  
// Nesta versão do JavaScript que roda neste browser,   
// existe o método getElementById, portanto expande o menu
}else {  
// Nesta versão do JavaScript que roda neste browser,   
// não existe o método getElementById, portanto contrai o menu
}

Então cada vez que eu chamo esse método ele muda o retorno dele?

Criado 16 de outubro de 2009
Ultima resposta 16 de out. de 2009
Respostas 2
Participantes 2