setTimeout出什么问题了

martin304 2010-10-27 06:38:53
<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在用法上出了什么问题,好像陷入了死循环?
...全文
194 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
martin304 2010-10-28
  • 打赏
  • 举报
回复
我试了7楼的方法,可是ig.onload=fuction(){}里面好像什么也不能做,连图片也不显示了,我刚学,不太懂出了什么问题,请高手赐教。
8楼的方法可以跳出循环,但是好像return语句应该紧跟timer = setTimeout("toselect()",500);

然后在else里面做事,我这样理解对不对?
zhangshaolongjj 2010-10-28
  • 打赏
  • 举报
回复
<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;
}
}
hch126163 2010-10-28
  • 打赏
  • 举报
回复
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(){/**这儿做你要做的事就好了*/};

liujun454 2010-10-28
  • 打赏
  • 举报
回复
:响应大哥号召,前来砸场子。
2:参与本次打砸抢的人员详见附表,请求处以极刑或不准假释的无期徒刑,以正明典。
3:其他小弟正在前往途中。
4:谢谢!
martin304 2010-10-28
  • 打赏
  • 举报
回复
我用alert检查了ig.readyState的值,确实等于"complete",还是跳不出循环。请1楼,3楼说的详细些,我要怎么改才能跳出循环?
sirzxj 2010-10-27
  • 打赏
  • 举报
回复
if(ig.readyState!="complete")
真哥哥 2010-10-27
  • 打赏
  • 举报
回复
你的if语句始终成立,这些错,alert就能调出来
tianxyz1988 2010-10-27
  • 打赏
  • 举报
回复
一直执行说明那个方法一直在调用,你把ig.readyState打印出来,看看结果。
shaoliang520xi 2010-10-27
  • 打赏
  • 举报
回复
这个if(ig.readyState!="complete")
永远不会==complete,所以一直在调用

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧