Pergunta

Eu acho que este é específico para IE 6.0, mas...

Em JavaScript para adicionar uma div para o DOM.Eu atribuir um id atributo.Quando eu, mais tarde, tentar pegar o div pelo id tudo que eu tenho é null.

Alguma sugestão?

Exemplo:

var newDiv = document.createElement("DIV");
newDiv.setAttribute("ID", "obj_1000");
document.appendChild(newDiv);

alert("Added:" + newDiv.getAttribute("ID") + ":" + newDiv.id + ":" + document.getElementById("obj_1000") );

Alerta de impressões "::null"

Parece funcionar bem no Firefox 2.0+

Foi útil?

Solução

Além de que outras respostas sugere que você precisa inserir o elemento no DOM para ele ser encontrados através de getElementById()), você também precisará usar uma minúscula nome do atributo para que o IE6 para reconhecê-lo como o id:

var newDiv = document.createElement("DIV"); 
newDiv.setAttribute("id", "obj_1000");
document.body.appendChild(newDiv);

alert("Added:"
   + newDiv.getAttribute("id") 
   + ":" + newDiv.id + ":" 
   + document.getElementById("obj_1000") );

...responde conforme o esperado:

Added:obj_1000:obj_1000:[object]

De acordo com o Documentação do MSDN para setAttribute(), até para o IE8 não é opcional terceiro parâmetro que controla se ele é ou não sensível a maiúsculas e minúsculas com relação ao nome do atributo.Acho que o padrão é...

Outras dicas

Div precisa ser adicionado a um elemento para fazer parte do documento.

document.appendChild(newDiv);

alert( document.getElementById("obj_1000") );

Você tem que adicionar a div para o dom.

// Create the Div
var oDiv = document.createElement('div');
document.body.appendChild(oDiv);

newDiv.setAttribute( "ID", "obj_1000" );

deve ser

newDiv.id = "obj_1000";

Hummm, obrigado por me colocar no caminho certo galera...isso foi estranho, mas acontece que se eu alterar as maiúsculas para minúsculas, tudo começando a trabalhar muito bem...

Resultado Final:

var newDiv = document.createElement("DIV");
newDiv.setAttribute("id", "obj_1000");
document.appendChild(newDiv);

alert("Added:" +
      newDiv.getAttribute("id") + ":" +
      newDiv.id + ":" +
      document.getElementById("obj_1000"));

ESTRANHO...MUITO ESTRANHO

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