HTML页面 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<div id="ad">
    <script type="text/javascript" src="ad.js"></script>
</div>
</body>
</html>ad.js页面
document.write("<div>hello</div>");请问如何用动态加载的方式加载这个ad.js比如    
var script = document.createElement("script");
  script.type="text/javascript";
          script.src= "ad.js";
document.getElementById('ad').appendChild(script);
虽然加载进去了但是没有执行

解决方案 »

  1.   

    请加上window.onload
    window.onload = function(){
    document.write("<div>hello</div>");
    }
      

  2.   

    不行,而且火狐会出现按F5没反应的卡死状态。可能是因为我ad.js里面写的是
    document.write("<div>hello</div>") 导致的
      

  3.   

    ad.js 文件的内容:
    function writeDiv() {
        document.write("<div>hello</div>");
    }页面文件内容:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script type="text/javascript" src="ad.js"></script>
    </head>
    <body>
    <div id="ad">
      <script type="text/javascript">writeDiv()</script>
    </div>
    </body>
    </html>
      

  4.   

    你这个跟我写的没几乎没区别。我的意思是不在div里面写script引用.我希望dom执行完毕之后再调用ad.js.再把里面的内容放到<div id="ad"></div>里面
      

  5.   

    卡死??我IE,FF和chrome都没问题。。
      

  6.   

    function writeDiv() {
        document.getElementById('ad').innerHTML+="<div>hello</div>";
    }
      

  7.   

    这样就会卡死。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    </head>
    <body>
    <div id="ad">
    </div>
    </body>
    <script type="text/javascript">
    window.onload = function(){
    var script = document.createElement("script");
    script.type="text/javascript";
    script.src= "ad.js";
    script.onload = function(){
    document.getElementById('ad').appendChild(script);
    }
    }
    </script>
    </html>
      

  8.   

    不是这里加onload..
    页面~~
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    </head>
    <body>
    <div id="ad">
    </div>
    </body>
    <script type="text/javascript">
    var script = document.createElement("script");
    script.type="text/javascript";
    script.src= "data.js";
    document.getElementById("ad").appendChild(script);
    }
    </script>
    </html>ad.js
    window.onload = function(){
    document.write("<div>hello</div>");
    }
      

  9.   

    也就是ad.js页面
    document.write("<div>hello</div>");改成
    window.onload = function(){
        document.write("<div>hello</div>");    
    }
      

  10.   

    ad.js:function sayHello(elem){
    elem.innerHTML = "<div>hello</div>";
    }
    HTML页面:<!DOCTYPE html>
    <html>
    <head>
    <title>test</title>
    </head>
    <body>
    <div id="ad"></div>
    <script>
    function adLoadCallback(){
    var ad = document.getElementById('ad');
    sayHello(ad);
    }
    var script = document.createElement("script");
    script.type="text/javascript";
    script.src= "ad.js";
    if(document.all){
    script.onreadystatechange = adLoadCallback;
    }else{
    script.onload = adLoadCallback;
    }
    document.body.appendChild(script);
    </script>
    </body>
    </html>
      

  11.   

    这个太强了。能说明下执行原理吗?为什么要在JS问价下面加onload
      

  12.   

    楼主,你要理解JS代码解析的原理,先是将所有function(){}定义的东西生成,然后就开始从上往下执行了,加载到你的JS导入那里就要执行你的write,你页面还没加载完,怎么可能认识。
    放到onload里,是HTML的一个加载完界面后的事件,页面加载完成后,会执行window的onload的方法,这时候再write就可以出来了。
      

  13.   

    这个加载回调写的不错,不过我现在的问题是JS里的文件是document.write('')这种写法。
    因为以前的写法就是这样的。
    <div id="ad">
      <script type="text/javascript" src="ad.js"></script>
    </div>
      

  14.   

    没事少用document.write,因为当文档加载完后再执行document.write,会清除掉之前页面上的所有信息
      

  15.   

    没事少用document.write,因为当文档加载完后再执行document.write,会清除掉之前页面上的所有信息,不信你可以试试11楼的方法
      

  16.   

    我12楼的方法是当这个js文件加载完就执行,好像不太符合你的要求,可以用11楼的方法,但一定不要在window.onload里面写document.write,除非你确定要清除之前的页面信息
      

  17.   

    能再写个DEMO么?因为我要多处调用外部脚本,这些脚本都是document.write这种的。
    11楼写的有点问题就是当我用火狐firebug的时候查看页面元素的时候整个页面会变成
    <html><head></head><body><div>hello</div></body></html>
    然后怎么刷新都还是这样。
      

  18.   

    在页面load之后再document.write就是重写页面,不变成这样还不正常了。。只能把document.write换掉,别无他法。
    主页面:<!DOCTYPE html>
    <html>
    <head>
        <title>test</title>
    </head>
    <body>
        <div id="ad"></div>
        <script>
            window.onload = function(){
            function adLoadCallback(){
                var ad = document.getElementById('ad');
                sayHello(ad);
            }
            var script = document.createElement("script");
            script.type="text/javascript";
            script.src= "ad.js";
            document.body.appendChild(script);
            }
        </script>
    </body>
    </html>ad.js:function sayHello(elem){
        elem.innerHTML = "hello";
    }
      

  19.   

    忘了加回调了。。<!DOCTYPE html>
    <html>
    <head>
        <title>test</title>
    </head>
    <body>
        <div id="ad"></div>
        <script>
            window.onload = function(){
            function adLoadCallback(){
                var ad = document.getElementById('ad');
                sayHello(ad);
            }
            var script = document.createElement("script");
            script.type="text/javascript";
            script.src= "ad.js";
            if(document.all){
                script.onreadystatechange = adLoadCallback;
            }else{
                script.onload = adLoadCallback;
            }
            document.body.appendChild(script);
            }
        </script>
    </body>
    </html>