2

我认为这是特定于 IE 6.0 但...

在 JavaScript 中,我将 a 添加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+ 中运行良好

4

5 回答 5

7

除了其他答案的建议(您需要将元素实际插入 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,还有一个可选的第三个参数,用于控制属性名称是否区分大小写。猜猜默认是什么...

于 2008-09-09T20:17:49.433 回答
3

需要将 div 添加到元素中才能使其成为文档的一部分。

document.appendChild(newDiv);

alert( document.getElementById("obj_1000") );
于 2008-09-09T20:10:09.327 回答
1

您必须将 div 添加到 dom。

// Create the Div
var oDiv = document.createElement('div');
document.body.appendChild(oDiv);
于 2008-09-09T20:09:50.297 回答
0

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

应该

newDiv.id = "obj_1000";

于 2008-09-09T20:10:22.260 回答
0

嗯,谢谢你们让我走上正确的轨道……这很奇怪,但事实证明,如果我将大小写改为小写,一切都开始正常了……

完成结果:

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

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

奇怪...非常奇怪

于 2008-09-09T20:20:40.020 回答