这个是肯定的
因为加载完后再掉用document.write就是相当与重写页面

解决方案 »

  1.   


    don't use "document.write" ,shuld be use innerHTML or createElement
      

  2.   

    似乎直接使用innerHTML要报错的,我的意思是新增一个iFrame的时候就动态修改里面内容,如何做呢?我尝试了很多种方式,要么不显示任何内容,要么就是javascript报错。
      

  3.   

    innerHTML必须有对象才可以使用!
    如果你iFrame里有NAME或者ID的话好可以,改变<title></title>这个也可以,但是不能用document.write
      

  4.   

    chinmo:
       在我的例子中iFrame是有id的,我现在是想根据需要,不同的iFrame输出不同的东西,因为是动态的,所以iFrame.src默认是空的,然后通过javascript来修改iFrame页面内容,本来我想取到iFrame的document后设置它的HTML就ok了,可现在就是无法动态修改的document的内容,不知能否给我一个例子。
      

  5.   

    DOM iFrame 对象没有对内部DOM直接操作的方法,如果要动态加载,你只能修改iFrame的src;src是预先完成的文档~!
    根据你的需求,你可以使用一个服务器页面asp/php/jsp,该页面根据获取的参数值来动态改变内容!<HTML>
    <script>
    var i = 0 ;    //全局变量,记录当前有几个IFrame
    function addIframe()
    {
    i++;
    var _id="iframe"+i;
    $("sp")=$("sp")+"<iframe id=iframe"+_id+"src='show.asp?xxx="+i+"' width=300 height=100></iframe>";
    }
    // document.all是非标准的属性。提倡使用 W3C 的标准形式 document.getElementById()
    function $(str){return document.getElementById(str).innerHTML;}
    </script>
    <body bgcolor="#ffffff" text="#000000" >
    <div id = sp></div>
    <br>
    <br>
    <input type="button" onclick="addIframe()" value="增加IFrame">
    </body>
    </html> 程序页面:show.asp
    <%
    response.Write("<HTML>this is " + request("xxx") + " </HTML>")
    %>
      

  6.   


    看来你不明白我的意思我的意思是:iFrame.src所带的的那个连接里面是否含有NAME或者ID,如果有的话,那么使用innerHTML就可以做到
    最简单的改变就是改变 <title> </title>这个属性document.title就可以改变
      

  7.   

    不要使用
    document.all("sp").innerHTML=document.all("sp").innerHTML+" <iframe  id=iframe" +(++i)+ " src='' width=300 height=100> </iframe>"; 
    这样导致innerHTML重新更新,所以已经添加的内容重新加载,而此时i是最后一个加载的iframe,所以只有最后一个iframe有内容使用dom的api来添加iframe,以前也碰到一个同样的问题,使用innerHTML的<HTML> 
    <script> 
    var i = 0 ;    //全局变量,记录当前有几个IFrame 
    function allSubmit() 
    {    for (j=1;j <=i;j++) 
       {      
       eval('iframe'+j+'.document.all("form1").submit();'); 
       } } function addIframe() 

    var If=document.createElement("iframe");
    If.style.height="100px";
    If.style.width="300px";
    If.id="iframe"+(++i);
    //document.all("sp").innerHTML=document.all("sp").innerHTML+" <iframe  id=iframe" +(++i)+ " src=''  width=300 height=100> </iframe>"; 
    document.all("sp").appendChild(If);//===========Dom API to add Iframe
    var doc1 = window.frames["iframe" + i].document; 
    //doc1.open(); 
    doc1.write(" <HTML>this is test </HTML>"); 

    </script> 
    <body bgcolor="#ffffff" text="#000000" > 
    <div id = sp> 
    </div> 
    <br> <br> 
    <input type="button" onclick="allSubmit()" value="全部提交"> 
    <input type="button" onclick="addIframe()" value="增加IFrame"> 
    </body> 
    </html> 
      

  8.   

    当然如果是动态创建IFrame,那么只能使用Dom API,就如showbo 说的,如果是动态改变iFrame.src连接里的内容,就如我所说
      

  9.   

    另外强烈建议你不要使用直接修改div标签innerHTML的方法,会导致所有iframe全部刷新,可改用以下方法<HTML>
    <script>
    var i = 0 ;    //全局变量,记录当前有几个IFrame
    function addIframe()
    {
    i++;
    var _id="iframe"+i;
    var _src="show.asp?xxx="+_id;
    $("sp").appendChild(append$(_id,_src)); //将按要求生成的节点挂载到目标节点最后一项
    }//获得对象
    function $(str){return document.getElementById(str);}//生成一个iframe节点
    function append$(strId,strSrc){
    var my$ = document.createElement("iframe");
    my$.setAttribute("id",strId);
    my$.setAttribute("src",strSrc);
    my$.setAttribute("width","300px");
    my$.setAttribute("height","100px");
    return my$;
    }
    </script>
    <body bgcolor="#ffffff" text="#000000" >
    <div id = sp></div>
    <br>
    <br>
    <input type="button" onclick="addIframe()" value="增加IFrame">
    </body>
    </html> 
      

  10.   

    http://blog.csdn.net/superwfei/archive/2008/05/15/2448107.aspx
      

  11.   

    看来我的回帖还是快了点,showbo的方法我试试,成功后马上给分。
      

  12.   

    showbo方法在IE中验证没有问题,正是我要的方式,考虑到Pla18sep和chinmo热心帮助:
    showbo:85分,Pla18sep:10分,chinmo:5分。