如下代码:
在主页面:
 document.write('<div id=test1><script src=1.js></script></div>'); 1.js代码:document.write('<div id=test2></div>'); 那么最终IE和firefox中div test2不是test1的子
而在主页面里面如果不是用document.write生成,那么 test2就是test1的子
请问高手,有什么方法解决这种情况,谢谢啦,呵呵

解决方案 »

  1.   

    JS是按<script>块解析的,要等当前块的script执行完了,才会去解析下一块,你的1.js并不会马上执行例如:<script type="text/javascript">
    alert(s);
    </script>
    <script type="text/javascript">
    var s = 123;
    alert(d);
    var d = 3;
    </script>第一个会出错. s未定义
    第二个出弹出undefined
      

  2.   

    document.write('<div id=test2></div>');  
    是指在文档最末端写入:('<div id=test2></div>');  
    自然得到的结果test2就不会是test1的子节点。
    如果你想在test1中写入东西,你需要使用:<style type="text/css">
    /*定义颜色*/
    #test1
    {
    border:solid 1px Red;
    padding:5px;
    }
    #test2
    {
    border:solid 1px Green;
    }
    </style><div id="test1"></div><script type="text/javascript">
        var test1 = document.getElementById("test1");
        test1.innerHTML = '<div id="test2" >test2</div>';
    </script>
      

  3.   

    document.write('<div id=test2></div>');  这个方法 只要有可以替代的方法 就不要用他
      

  4.   

    关键是1.js是别的站点的js,现在只是想通过 test1来控制test2内容的显示位置.
    这个问题在现在很多地方遇到,比如 google adsense almama 广告等
      

  5.   


    这里只是举例而已,1.js可以添加各种元素,现在就是要通过test1控制这些元素的显示位置
      

  6.   

    document.write,强制写入文档。可能会覆盖已经写入的html。而且是在头上开始加。应该不存在层级关系要客户端动态增加,用dom
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title><script type="text/javascript">
    window.onload = function() {
    var div = document.createElement("DIV");
    var text = document.createTextNode("test");
    var divTarget = document.getElementById("test1");
    div.appendChild(text);
    divTarget.appendChild(div);
    };
    </script></head>
    <body>
    <div id="test1"></div>
    </body>
    </html>