<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在用法上出了什么问题,好像陷入了死循环?
<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在用法上出了什么问题,好像陷入了死循环?
永远不会==complete,所以一直在调用
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(){/**这儿做你要做的事就好了*/};
<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;
}
}
8楼的方法可以跳出循环,但是好像return语句应该紧跟timer = setTimeout("toselect()",500);然后在else里面做事,我这样理解对不对?