Вопрос

Я думаю, что это характерно для IE 6.0, но...

В JavaScript я добавляю div в ДОМ.Я назначаю 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 работает нормально +

Это было полезно?

Решение

В дополнение к тому, что предлагают другие ответы (что вам нужно фактически вставить элемент в 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 существует необязательный третий параметр это определяет, чувствительно ли оно к регистру в отношении имени атрибута.Угадайте, что используется по умолчанию...

Другие советы

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

document.appendChild(newDiv);

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

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

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

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

должно быть

newDiv.id = "obj_1000";

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

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

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

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

СТРАННО...ОЧЕНЬ СТРАННО

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top