如何添加div并在以后捡起它

时间:2008-09-09 20:07:56

标签: javascript css dhtml

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

在JavaScript中,我向DOM添加了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 +中正常工作

5 个答案:

答案 0 :(得分: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]

根据setAttribute()的{​​{3}},直到IE8,有一个可选的第三个​​参数,它控制是否区分大小写属性名称。猜猜默认是什么......

答案 1 :(得分:3)

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

document.appendChild(newDiv);

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

答案 2 :(得分:1)

你必须将div添加到dom。

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

答案 3 :(得分:0)

newDiv.setAttribute(“ID”,“obj_1000”);

应该是

newDiv.id =“obj_1000”;

答案 4 :(得分: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"));

ODD ......很奇怪