Как добавить div и забрать его позже - PullRequest
1 голос
/ 10 сентября 2008

Я думаю, что это специфично для IE 6.0, но ...

В JavaScript я добавляю div в DOM. Я назначаю атрибут id. Когда я позже попытаюсь поднять div с помощью id, я получу только null.

Есть предложения?

Пример:

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

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

Предупреждения "::null"

Кажется, работает нормально в Firefox 2.0 +

Ответы [ 5 ]

7 голосов
/ 10 сентября 2008

В дополнение к тому, что предлагают другие ответы (что вам нужно фактически вставить элемент в DOM, чтобы он был найден через getElementById()), вам также нужно использовать имя атрибута в нижнем регистре, чтобы IE6 мог распознать его как 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") );

... отвечает как положено:

Added:obj_1000:obj_1000:[object]

В соответствии с документацией MSDN для setAttribute(), вплоть до IE8 существует необязательный третий параметр , который контролирует, учитывает ли он регистр в отношении имени атрибута. Угадай, какое значение по умолчанию ...

3 голосов
/ 10 сентября 2008

Элемент div необходимо добавить к элементу, чтобы он стал частью документа.

document.appendChild(newDiv);

alert( document.getElementById("obj_1000") );
1 голос
/ 10 сентября 2008

Вы должны добавить div к dom.

// Create the Div
var oDiv = document.createElement('div');
document.body.appendChild(oDiv);
0 голосов
/ 10 сентября 2008

Хммм, спасибо, что поставили меня на правильный путь, ребята ... это было странно, но оказалось, что если я изменил регистр на нижний регистр, все начало работать просто отлично ...

Готовый результат:

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

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

ODD ... ОЧЕНЬ ODD

0 голосов
/ 10 сентября 2008

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

должно быть

newDiv.id = "obj_1000";

...