2013-04-30 98 views
0
function ImageExist(url) 
      { 
       var num; 
       $.ajax({ 
       url:url, 
       error: function() 
       { 
        num = 0; 
       }, 
       success: function() 
       { 
        num = 1; 
       } 
      }); 
      return num; 
      } 

      function ChangeColor(color, type){ 
      var count = 1; 
     while(ImageExist("images/"+type+"/"+color+"/"+count+".jpg") != 0){ 
      count++; 
     } 
      var str = ""; 
      var cm = new Array(count); 
      for(var i = 1; i < count; i++){ 
       cm[i] = "<img src=\"images/"+type+"/"+color+"/"+i+".jpg\" onclick=\"ChangeImg('"+type+"','"+color+"','"+i+"')\">"; 
       str = str+cm[i]; 
      } 
      document.getElementById("prodPhoto").innerHTML = cm[1]; 
      document.getElementById("prodPhotos").innerHTML = str; 


      } 

      function ChangeImg(type, color, img){ 
       var light = "<a href=\"images/"+type+"/"+color+"/"+img+".jpg\" rel=\"lightbox[sofa]\" title=\"Comfort M\"/>"; 
       document.getElementById("prodPhoto").innerHTML = light+"<img src=\"images/"+type+"/"+color+"/"+img+".jpg\">"+"</a>"; 
      } 
      function preload(arrayOfImages) { 
      $(arrayOfImages).each(function(){ 
      (new Image()).src = this; 
      // Alternatively you could use: 
      // (new Image()).src = this; 
      }); 
      } 

这段代码应该找出每个文件夹有多少图片,称为产品和颜色。然后将它们输出到html页面。它可以在我的笔记本电脑上正常工作,但在大学网络上它会挂起网站。Javascript:网站在我的电脑上运行良好,但在旧电脑上它挂起了网站

这可能与不是管理员有关吗?

+0

我会尝试丢弃一些'的console.log()'在里面,看到哪儿它挂。这可能是由于多种原因,首先是在我脑海中是在浏览器中的差异。 – Shaded 2013-04-30 13:37:50

回答

0

的问题是你有这样的事实与异步的Ajax while循环在同步调用while循环,这是要求浏览器锁定。没有理由进行Ajax调用以查看图像是否存在。以异步方式使用图像标记。

该代码不是100%满足您的需求,只是一个基本的例子。

function checkImage(url, good, bad) { 
    var img = new Image(); 
    img.onload = good; 
    img.onerror = bad; 
    img.src = url; 
} 

function findImgs() { 
    var currentImg = -1; 
    function next(){ 
     currentImg++ 
     checkImage("foo" + currentImg + "jpg", next, done); 
    } 
    function done() { 
     currentImg--; 
     alert("last Good Count was " + currentImg); 
    } 
} 
0

你执行你的while语句中的Ajax调用了大量的,因为你的imageExist功能是异步的,但是当你回到你的num变量始终是undefined。所以,你的代码说,«而函数返回的东西比0增量次数不同,然后再试一次。»

看看在Firefox的JavaScript控制台,下net面板

相关问题