【 在 ocaml 的大作中提到: 】
: 感谢大神,这样果然可以得到图片的计数,但是不想用alert信息,想使用变量保存这个totalNumber,不知道onerror函数返回值怎么搞,太菜了,还望赐教
反回不了的啊,前面有人说的对,图片加载是异步的,但是你的js主线程是停不下来等的
我觉得有两种选择,
1是你把剩余的逻辑都扔onerror里,像这样
img.onerror=function(){
doMyLogic(totalNumber);
}
2的话就是在主程序里注册一个延迟执行用来同步‘异步执行’,dojo里叫deferred,jquery里不知道叫啥,估计不是deferred就是promise。
var img,
totalNumber = 0,
deferred = new Deferred();
function count( i ){
img = new Image();
img.src = i + ".jpg";
img.onload=function(){
if (img.width) {
totalNumber++;
count( ++i );
}
}
img.onerror=function(){
alert(totalNumber);
deferred.resolve(totalNumber);
// 这句会调用下面一行参数里的方法,把totalNumber赋值给totalN
}
}
deferred.then(function(totalN){...});
count( 1 );
deferred具体使用google即可
--
FROM 124.126.194.*