如何添加div并在以后使用

时间:2020-03-05 18:50:19  来源:igfitidea点击:

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

在JavaScript中,我向DOM中添加了一个" div"。我分配了一个id属性。当我以后尝试通过id来拾取div时,我得到的只是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+中可以正常工作

解决方案

回答

我们必须将div添加到dom。

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

回答

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

document.appendChild(newDiv);

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

回答

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

应该

newDiv.id =" obj_1000";

回答

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

回答

Hummm,感谢我们让我进入正确的轨道……这很奇怪,但是事实证明,如果我将大小写更改为小写,一切都将开始正常工作……

完成的结果:

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

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

奇...非常奇