在做图片上传大小判断的时候遇到一个奇怪的问题,简要代码如下:
<input type="file" id="filename" name="filename">
<img id="testSize" src="" style="display: none"><script type="text/javascript">
var tag = true;
var picChecker = document.getElementById("testSize");
//上传
function a(){
b();
alert(tag);
if(tag){.....}
}
//判断图片的大小不能超过500K
function b(){
picChecker.src = document.getElementById("filename").value;//读图片
picChecker.onreadystatechange=function(){
if(picChecker.readyState=="complete"){
if(picChecker.fileSize>500*1024){
window.tag = false;
MsgBox.showInfoMsg("上传图片大小不能超多500K","提示信息");
return;
}
}
}
}
</script>
问题描述:我在a方法中调用b方法,之后又alert(tag),我想要的结果是如果图片上传大于500K应该是输出false,但是实际上还是true,然后
我在a方法里使用setTimeout方法,设置等待时间,如下:
function a(){
b();
setTimeout("test()",1000);
}
function test(){
alert(tag);
}
这个时候 就可以输出false。
我个人得出结论是:在a方法里调用b方法后,b方法没有执行完就在执行了a方法里的alert所以导致没有对tag赋值成功。
但是设置等待时间不是这个问题的解决办法,所以现在不知道如何才能让b方法完全执行完,才做后续的操作。
<input type="file" id="filename" name="filename">
<img id="testSize" src="" style="display: none"><script type="text/javascript">
var tag = true;
var picChecker = document.getElementById("testSize");
//上传
function a(){
b();
alert(tag);
if(tag){.....}
}
//判断图片的大小不能超过500K
function b(){
picChecker.src = document.getElementById("filename").value;//读图片
picChecker.onreadystatechange=function(){
if(picChecker.readyState=="complete"){
if(picChecker.fileSize>500*1024){
window.tag = false;
MsgBox.showInfoMsg("上传图片大小不能超多500K","提示信息");
return;
}
}
}
}
</script>
问题描述:我在a方法中调用b方法,之后又alert(tag),我想要的结果是如果图片上传大于500K应该是输出false,但是实际上还是true,然后
我在a方法里使用setTimeout方法,设置等待时间,如下:
function a(){
b();
setTimeout("test()",1000);
}
function test(){
alert(tag);
}
这个时候 就可以输出false。
我个人得出结论是:在a方法里调用b方法后,b方法没有执行完就在执行了a方法里的alert所以导致没有对tag赋值成功。
但是设置等待时间不是这个问题的解决办法,所以现在不知道如何才能让b方法完全执行完,才做后续的操作。
解决方案 »
- jsp页面中下拉框的值从数据库中取出来,用某个从数据库中查出的值作为查询条件再对数据库进行查询呢?求各位大神的帮助?急啊?大神?
- 新人请教两个js问题.1-如何能触发一个事件让一个按钮显示出被点击了一下的动画?2-input file透明,用其他按钮遮盖,IE7下点击有光标闪动如何解决?
- 关于jsjac的问题
- 关于javascript打开服务器端excel问题
- 哥哥们,帮下忙阿,这段复制的JS代码,在复制文本没有段落,就是不会换行,大家帮忙看下阿 - -! thans
- Extaspnet的页面事件问题
- 如何动态的改变Html中tr行的背景颜色
- 我想进入一个页面的时候,根据页面中的查询字符串type(=1,=2)来让该页面一加载,滚动条就到页面最顶端。
- 马上结贴,缺少对象的怪问题!
- 正则问题
- 这种效果是用JavaScript做出来的吗?
- SCRIPT 与 PHP 参数互传问题
}function b(){
picChecker.src = document.getElementById("filename").value;//读图片
picChecker.onreadystatechange=function(){
if(picChecker.readyState=="complete"){
if(picChecker.fileSize>500*1024){
window.tag = false;
MsgBox.showInfoMsg("上传图片大小不能超多500K","提示信息");
return window.tag;
}
}
}
}
貌似不行啊,每次都不能进这个if(b()){},alert(b())每次都是undefined。