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

ufo20020427 2013-02-18 04:56:38


<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无效造成的。
请问如何处理。谢谢!
...全文
297 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
itscat 2013-11-01
  • 打赏
  • 举报
回复
5.4.5 DOM使用getElementById( )方法获取节点 http://3aj.cn/article/515.html
ufo20020427 2013-02-18
  • 打赏
  • 举报
回复
但是如果一开始就把创建好的元素加入到DOM中,那么后面每添加一个内容,DOM就会为了呈现出变化,对页面进行布局改变,及渲染等。我记得有个document.createDocumentFragment()就是为了应对这个性能问题,但我试了,好像也没法解决我上面的问题。
Go 旅城通票 2013-02-18
  • 打赏
  • 举报
回复
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);  //为了性能,我想把这句放这里
xiaofan_sap 2013-02-18
  • 打赏
  • 举报
回复
你分析的是对的 ,没有添加到 dom中 当然没办法定位元素 呵呵 ,这跟性能没多大关系 。
ufo20020427 2013-02-18
  • 打赏
  • 举报
回复
哪位解答下,谢谢!
ufo20020427 2013-02-18
  • 打赏
  • 举报
回复
newNode创建后,如果没及时加入到divContainer中, 后面的 var innerDiv = newNode.document.getElementById(id); innerDiv.innerHTML = "测试内容"; 无法正常执行。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧