我认为这是 IE 6.0 特有的,但是......

在 JavaScript 中我添加了一个 div 到 DOM。我分配一个 id 属性。当我稍后尝试拿起 divid 我得到的只是 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