读书人

请问把createElement加入DOM前没法使

发布时间: 2013-02-24 17:58:56 作者: rapoo

请教把createElement加入DOM前,没法使用getElementById问题



<script type ="text/javascript">

$(function()
{
var title = "标题"
var id = "001";
var newNode;
newNode = ParseDom("<fieldset><legend>" + title +"</legend><div id='"+ id +"'></div></fieldset>");
document.getElementById("divContainer").appendChild(newNode); //不想放这里

var innerDiv = newNode.document.getElementById(id);
innerDiv.innerHTML = "测试内容";

//document.getElementById("divContainer").appendChild(newNode); //为了性能,我想把这句放这里

}
)


function ParseDom(content)
{
var newObject = document.createElement("div");
newObject.innerHTML = content;   
return newObject;
};

</script>



document.getElementById("divContainer").appendChild(newNode); 这句,为了性能,
我想放到最后一行。但是这样,会发现没法顺利添加。
我估计是新创建的元素,没加入DOM前,document.getElementById无效造成的。
请问如何处理。谢谢!
[解决办法]
你分析的是对的 ,没有添加到 dom中 当然没办法定位元素 呵呵 ,这跟性能没多大关系 。
[解决办法]
var innerDiv = newNode.document.getElementById(id);

这里错了吧,getElementById是document的方法,div节点没有document属性,可以使用getElementsByTagName方法

没添加到DOM树的对象无法使用getElementById方法

var title = "标题"
var id = "001";
var newNode;
newNode = ParseDom("<fieldset><legend>" + title +"</legend><div id='"+ id +"'></div></fieldset>");
//document.getElementById("divContainer").appendChild(newNode); //不想放这里

//var innerDiv = newNode.document.getElementById(id);
var innerDiv = newNode.getElementsByTagName('div')[0] /////用getElementsByTagName 代替
innerDiv.innerHTML = "测试内容";

document.getElementById("divContainer").appendChild(newNode); //为了性能,我想把这句放这里

读书人网 >JavaScript

热点推荐