有时出现这个现象是因为用JS改变了文档对象的结构或属性,后面的代码紧跟着就要访问刚被修改的内容。由于页面属性的修改还要暂时未能生效,所以访问的时候要出错;要是ALERT一下,代码运行停了下来,页面就有时间可以刷新了,所以后面的代码就可以运行下去。对table和select的操作尤其要小心一点。

解决方案 »

  1.   

    象这样:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title> * emu * </title>
    </head>
    <body>
    <select id=s1 style="width:80"></select>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    for (var i=0;i<10;i++)
    {
    var o = new Option();
    o.value=i;
    o.innerText="test"+i
    s1.insertBefore(o)
    }alert()
    s1.value=9
    //-->
    </SCRIPT></body>
    </html>把alert()去了就不能设定s1的value。也可以用setTimeout来搞定,就不用alert了:setTimeout("s1.value=9",0);
      

  2.   

    对,有时候有的操作必须一个操作完了之后,才可以继续你可以看如下两个页面!http://www30.brinkster.com/bencalie/test/test.htm(无alert())
    http://www30.brinkster.com/bencalie/test/test1.htm(有alert())我的代码中,使用了alert()就可以保证将图片成功载入到iframe中,点击另存为出来的就是另存图片的对话框,而不是另存网页的了代码:
    <body>
    <p><img id=pic1 src=csdn.gif onclick=savepic()>点击另存[要在同一域]</p>
    <script>
    function savepic(){
    if(document.all.a1==null){
    objIframe=document.createElement("IFRAME");
    document.body.insertBefore(objIframe);
    objIframe.outerHTML= "<iframe name=a1 style='width:0;hieght:0' src="+pic1.src+"></iframe>";
    re=setTimeout("savepic()",100)
    }
    else
    {
    clearTimeout(re)
    alert()//区别在于此
    pic = window.open(pic1.src,"a1")
    pic.document.execCommand("SaveAs")
    document.all.a1.removeNode(true)
    }
    }
    </script>