<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无效造成的。
请问如何处理。谢谢!

解决方案 »

  1.   

    newNode创建后,如果没及时加入到divContainer中,
    后面的
     var innerDiv = newNode.document.getElementById(id);         
     innerDiv.innerHTML = "测试内容";   
    无法正常执行。
      

  2.   

    你分析的是对的 ,没有添加到 dom中 当然没办法定位元素 呵呵 ,这跟性能没多大关系 。
      

  3.   

    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);  //为了性能,我想把这句放这里     
      

  4.   

    但是如果一开始就把创建好的元素加入到DOM中,那么后面每添加一个内容,DOM就会为了呈现出变化,对页面进行布局改变,及渲染等。我记得有个document.createDocumentFragment()就是为了应对这个性能问题,但我试了,好像也没法解决我上面的问题。
      

  5.   

    5.4.5 DOM使用getElementById( )方法获取节点
    http://3aj.cn/article/515.html