<form   name= "frmUpload"   Method= "Post" > 
        <img   id= "img2" onload="checksize(this)" >
 <br> 
        图片: <input   type= "file"  onchange="toselect.call(this)" /> 
<input   type= "submit"   value= "开始上传"/> 
</form> 
<script language="javascript">
function toselect(){
     var ig=new Image();
 ig.src=this.value;
    frmUpload.img2.src=ig.src;

 if(ig.readyState!="complete")
 {setTimeout("toselect()",500);}
 
  }这里的setTimeout在用法上出了什么问题,好像陷入了死循环?

解决方案 »

  1.   

    这个if(ig.readyState!="complete")
    永远不会==complete,所以一直在调用
      

  2.   

    一直执行说明那个方法一直在调用,你把ig.readyState打印出来,看看结果。
      

  3.   

    你的if语句始终成立,这些错,alert就能调出来
      

  4.   

    我用alert检查了ig.readyState的值,确实等于"complete",还是跳不出循环。请1楼,3楼说的详细些,我要怎么改才能跳出循环?
      

  5.   

    function toselect(){
      var ig=new Image();
    ig.src=this.value;
      frmUpload.img2.src=ig.src;if(ig.readyState!="complete")
    {setTimeout("toselect()",500);}
     
      }楼主,你究竟要做什么呢? 你逻辑出问题了
    ig.src=this.value; // 赋值,此后马上执行
    if(ig.readyState!="complete")
    这个肯定没加载完成过500mm.就算这个加载完成了。此时进入此函数
    var ig=new Image();
    ig.src=this.value;你又重新设置了一个ig 对象重复第一次的操作,永远结束不了!如果你是要让图片加载完成后做一件事:
    var ig=new Image();
    ig.src=this.value;
    ig.onload=function(){/**这儿做你要做的事就好了*/};
      

  6.   

    <form name= "frmUpload" Method= "Post" > 
      <img id= "img2" onload="checksize(this)" >
     <br> 
      图片: <input type= "file" onchange="toselect.call(this)" /> 
    <input type= "submit" value= "开始上传"/> 
    </form> 
    <script language="javascript">
    var timer;
    function toselect(){
      var ig=new Image();
    ig.src=this.value;
      frmUpload.img2.src=ig.src;clearTimeout(timer);
    if(ig.readyState!="complete"){
    timer = setTimeout("toselect()",500);
    }else {
    return;
    }
      }
      

  7.   

       我试了7楼的方法,可是ig.onload=fuction(){}里面好像什么也不能做,连图片也不显示了,我刚学,不太懂出了什么问题,请高手赐教。
       8楼的方法可以跳出循环,但是好像return语句应该紧跟timer = setTimeout("toselect()",500);然后在else里面做事,我这样理解对不对?