2015-07-10 46 views
1
$(document).foundation(); 

var image_array = new Array(); 
var counter = 0; 
var changeBGImageInterval; 
var delay = 3000; //default 

$(document).ready(function(){ 
    console.log("Ready"); 

    $("#hashtagSearchForm").submit(function(event){ 
    var idelay = parseInt($("input[name=delaybox]").val()); 

    if(isNaN(idelay) === false){ 
     delay = idelay * 1000; // convert seconds to milliseconds (setInterval requirement) 
    }else{ 
     delay = 3000; // set to default if no input 
    } 

    console.log("Fetching images with #" + $("input[name=hashtagbox]").val()); 
    console.log("Delay: " + delay + " milliseconds"); 

    // AJAX part 
    $.post(
     "fetchInstagramImages.php", 
     { 
     'hashtag' : $("input[name=hashtagbox]").val() 
     }, 
     function(data){ 
     // This is triggered after the request has been completed. This is custom code. 
     // data = response data of request. In this case: echo json_decode($myArray); 

     var images = JSON.parse(data); 
     image_array = []; // clear array; 
     $(images).each(function(count){ 
      image_array.push(images[count]); 
     }); 

     // reset timed event first 
     clearInterval(changeBGImageInterval); 

     // for the timed event 
     changeBGImageInterval = setInterval(
      function(){ 
      $("body").css("background-image", 'url(' + image_array[counter] +')'); 
      // console.log(image_array[counter]); 
      counter++; 
      if(counter == 20){counter = 0;} 
      }, 
      delay // 3 seconds 
     ); 

     } 
    ); 
    event.preventDefault(); 
    }); 
}); 

如何使用javascript從我的幻燈片中預載圖像?因爲加載不快並且看起來不太好。任何建議如何?或者有沒有人可以編輯它?謝謝。我如何使用javascript預載圖片幻燈片?因爲加載不快並且看起來不太好。任何建議如何?或者有沒有人可以編輯它?由於使用Javascript預加載陣列

回答

1

嘗試預加載你的圖片是這樣的:

$(function(){ 

     //let's preload some images 
     $.fn.preload = function() { 
     this.each(function(){ 
      $('<img/>')[0].src = this; 
     }); 
    } 

    $([ 
     '/assets/images/prices_img/289_on.gif', 
     '/assets/images/prices_img/389_on.gif', 
     '/assets/images/prices_img/489_on.gif', 
     '/assets/images/howitworks1.gif', 
     '/assets/images/howitworks2.gif', 
     '/assets/images/howitworks3.gif', 
     '/assets/images/not_signs.gif', 
     '/assets/images/socal_coverage.gif', 
     '/assets/images/property_info_steps/a_on.gif', 
     '/assets/images/property_info_steps/b_on.gif', 
     '/assets/images/property_info_steps/c_on.gif', 
     '/assets/images/property_info_steps/d_on.gif', 
     '/assets/images/property_info_steps/e_on.gif', 
     '/assets/images/property_info_steps/f_on.gif', 
     '/assets/images/property_info_steps/g_on.gif', 
     '/assets/images/property_info_steps/h_on.gif', 
     '/assets/images/property_info_steps/i_on.gif', 
     '/assets/images/property_info_steps/j_on.gif', 
     '/assets/images/browseimage.gif', 
     '/assets/images/ajax-loader.gif', 
     ]).preload(); 

}); 

修改陣列爲你的圖像相應。祝你好運!

編輯:之前添加以下內容clearInterval(changeBGImageInterval);

  //let's preload some images 
     $.fn.preload = function() { 
      this.each(function(){ 
       $('<img/>')[0].src = this; 
      }); 
     } 

     $(image_array).preload(); 

所以整個修改後的代碼看起來就像這樣:

$(document).foundation();  

var image_array = new Array(); 
var counter = 0; 
var changeBGImageInterval; 
var delay = 3000; //default  

$(document).ready(function(){ 
    console.log("Ready");  

    $("#hashtagSearchForm").submit(function(event){ 
    var idelay = parseInt($("input[name=delaybox]").val());  

    if(isNaN(idelay) === false){ 
     delay = idelay * 1000; // convert seconds to milliseconds (setInterval requirement) 
    }else{ 
     delay = 3000; // set to default if no input 
    }  

    console.log("Fetching images with #" + $("input[name=hashtagbox]").val()); 
    console.log("Delay: " + delay + " milliseconds");  

    // AJAX part 
    $.post(
     "fetchInstagramImages.php", 
     { 
     'hashtag' : $("input[name=hashtagbox]").val() 
     }, 
     function(data){ 
     // This is triggered after the request has been completed. This is custom code. 
     // data = response data of request. In this case: echo json_decode($myArray);  

     var images = JSON.parse(data); 
     image_array = []; // clear array; 
     $(images).each(function(count){ 
      image_array.push(images[count]); 
     });  

     //let's preload some images 
     $.fn.preload = function() { 
      this.each(function(){ 
       $('<img/>')[0].src = this; 
      }); 
     } 

     $(image_array).preload(); 

     // reset timed event first 
     clearInterval(changeBGImageInterval);  

     // for the timed event 
     changeBGImageInterval = setInterval(
      function(){ 
      $("body").css("background-image", 'url(' + image_array[counter] +')'); 
      // console.log(image_array[counter]); 
      counter++; 
      if(counter == 20){counter = 0;} 
      }, 
      delay // 3 seconds 
     );  

     } 
    ); 
    event.preventDefault(); 
    }); 
}); 
+0

我應該改變到我的數組變量:image_array?這些圖像是從api生成的,因此它們是隨機的。怎麼辦 – monsteruniversity0908

+0

查看我的編輯。祝你好運! –

+0

對不起,我試着添加你的代碼,但它不起作用,也許是因爲標籤,因爲我沒有任何目錄,我正在從instagram api生成圖片,然後我用javascript將它放入幻燈片。 – monsteruniversity0908