<script language="javaScript">
function loadImage(url, callback) {
var img = new Image();
img.src = url;

if (img.complete){
callback.call(img);

}else{
var oldstatus = window.status;
window.status = "Loading...";
img.onload = function(){
callback.call(img);
window.status = oldstatus;

}
}
}
function imgLoaded(){
alert(this.width);}
</script>
<body>
<INPUT type="file" name="file" onChange="loadImage(this.value,imgLoaded); size="34">
一运行,就不断地弹出提示框,这是怎么回事啊!!!!!!!!!

解决方案 »

  1.   


    this. callback.call(img)
      

  2.   

    没问题.<script language="javaScript">
        function loadImage(url, callback) {
            var img = new Image();
            img.src = url;        if (img.complete){
                callback.call(img);        }else{
                var oldstatus = window.status;
                window.status = "Loading...";
                img.onload = function(){
                    callback.call(img);
                    window.status = oldstatus;            }
            }
        }
        function imgLoaded(){
            alert(this.width);    }
    </script>
    <body>
        <INPUT type="file" name="file" onChange="loadImage(this.value,imgLoaded)"  size="34">
      

  3.   

    出错原因: <INPUT type="file" name="file" onChange="loadImage(this.value,imgLoaded)"  size="34">
      

  4.   

    <INPUT type="file" name="file" onChange="loadImage(this.value,imgLoaded);"size="34"> 
      

  5.   

    onChange="loadImage(this.value,imgLoaded)"  少了一个分号
      

  6.   

    我已经改为了<INPUT type="file" name="file" onChange="loadImage(this.value,imgLoaded);"  size="34">可是运行还是不断出现提示框郁闷
      

  7.   

    是这样,我发现js在显示一个图片时,有的它就能加载,有得就不能,就是说,图片的.width有的时候有值,有的时候却是undifended,所以在网上找了一段代码,说是可以解决这个问题,但是,还是不行啊
      

  8.   

    原因在img.complete上,图片大的时候实际上没加载完就执行了,所以width出错比较好的解决办法是在window.onload里再做一次判断
      

  9.   

    能说具体些吗?我对JS编程实在是头疼,我把自己查的代码作了如下修改
    function loadImage(url, callback) {
    var img = new Image();
    img.src = url;

    if (img.complete){
    //callback.call(img);
    alert("已经加载的内容"+img.width);
    return;

    }

    img.onload = function(){
    alert("延迟加载的图片大小"+img.width);
    };

    }
    function imgLoaded(){
    alert(this.width);}<INPUT type="file" name="file" onChange="loadImage(this.value,imgLoaded);"  size="34">结果alert("延迟加载的图片大小"+img.width);还是不断的跳出,真是不知道为什么啊
      

  10.   

    这是我重新的测试代码
    <html>
    <head>
    <script language="javaScript">
    function loadImage(url, callback) {
    var img = new Image();
    img.src = url;

    if (img.complete){
    callback.call(img);
    return;

    }

    img.onload = function(){
    callback.call(img);
    };

    }
    function imgLoaded(){
    alert(this.width);}</script>
    </head>
    <body>
    <INPUT type="file" name="file" id="browser"
    style="left: 8.54em; top: 3.8025em; width: 23.5em; height: 2.1294em; "
    tabIndex=11
    onChange="loadImage(this.value,imgLoaded);"  var oldValue=this.value; size="34">
    </body>
    </html>运行的时候还是不断弹出对话框啊
      

  11.   

    <INPUT type="file" name="file" id="browser" 
    style="left: 8.54em; top: 3.8025em; width: 23.5em; height: 2.1294em; " 
    tabIndex=11 
    onChange="loadImage(this.value,imgLoaded);"  var oldValue=this.value; size="34"> ??怎么JS的语句跑到引号外面去了你一开始的代码也是这个问题。。
      

  12.   


    哦,其实括进去也不影响,我发现一个问题,如果我传入的是jpg或gif的非动画图片,就不会不断显示对话框,要是传入的gif是动画图片,怎就会不断显示对话框,是不是这里有问题啊
      

  13.   

    搞定了吗?楼主,我今天也遇到了这个问题,我是这么搞定的:
    把代码段
    img.onload = function(){ 
    callback.call(img); 
    }; 

    换成:
    img.onreadystatechange=function(){
               if(img.readyState=="complete")
                return callback.call(img);
              }

    就没啥事儿了。不妨试试。