2012-10-30 56 views
0

我正在嘗試使未知(但很少)數量的圖像隨機預加載橫幅。動態隨機橫幅

我在Javascript和jQuery的新手,但我幾乎得到它做工精細: http://jsfiddle.net/kTS3t/1/

我想這有什麼不對的,因爲時間是不正常。 因爲我希望它可以毫不拖延地顯示,所以我在JavaScript代碼上分割了第一個橫幅。

任何線索怎麼了?

非常感謝!

代碼(就像http://jsfiddle.net/kTS3t/1/):

CSS

#banner-governo { 
    position:relative; 
    width:300px; 
    height:100px; 
} 
.banner-gov { 
    position:absolute; 
    top:0; 
    right:0; 
    display:none;  
}​ 

JS + JQUERY

$(window).load(function() { 

var numItems = $('.banner-gov').length; 
var i = 2; 
var espera = 3000; 

function bannerrand() { 
    $('#banner-gov-1').fadeIn('medium', function() { 
     $(this).delay(espera).fadeOut('medium'); 
    }) 

    while (i <= numItems) { 
     var esperaItem = espera*i; 
     $('#banner-gov-'+i).delay(esperaItem).fadeIn('medium', function() { 
      $(this).delay(espera).fadeOut('medium', function(){ 
       if(i = numItems){ 
        bannerrand(); 
       }; 
      }); 
     }); 

     i++; 
    } 
} 
bannerrand(); 

}); //end $(window).load(function 

HTML

<div id="banner-governo"> 
<div class="banner-gov" id="banner-gov-1"> 
    <img src="http://www.hospedagemdesitesgratis.org/img/hospedagem-gratis-html.jpg" /> 
</div> 
<div class="banner-gov" id="banner-gov-2"> 
    <img src="http://apostilaria.com/wp-content/uploads/2011/02/javascript.jpg" /> 
</div> 
<div class="banner-gov" id="banner-gov-3"> 
    <img src="http://otaqui.com/blog/wp-content/uploads/html5_vs_flash-300x100.png" /> 
</div> 
</div>​ 

再次感謝!

回答

1

檢查出來。 http://jsfiddle.net/kTS3t/4/

的想法是使用週期操作mod和召回動畫功能無限期使用的fadeOut回調函數圖像。

var numItems = $('.banner-gov').length; 
var i = 2; 
var espera = 3000; 

function bannerrand() { 


     //var esperaItem = espera*i; 
     $('#banner-gov-'+(i% numItems + 1)).delay(espera).fadeIn('medium', function() { 
      $(this).delay(espera).fadeOut('medium', function(){ 

        bannerrand(); 

      }); 
     }); 

     i++; 

} 

    $('#banner-gov-1').fadeIn('medium', function() { 
     $(this).delay(espera).fadeOut('medium', function(){ 

        bannerrand(); 

      }); 

    }) 
+0

此代碼工作正常,非常感謝! :) 我認爲這是更好的橫幅之間沒有延遲,所以我做了另一個修改,它變得完美(刪除延遲淡化)http://jsfiddle.net/kTS3t/10/ 我只是無法理解什麼你的意思是用mod運算符和這段代碼:+(i%numItems + 1)! – LuAmbros

+0

@LuAmbros是改變延遲以滿足您的需求。 mod運算符'%'在'i'除以'numItems'之後剩餘餘數。所以它總是返回一個介於'0'和'numItems - 1'之間的數字。 – Quincy

+1

@LuAmbros順便說一下,顯示順序現在不是隨機的,而是按順序。你可以使用'Math.random()'來隨機化顯示。將'i'替換爲'Math.floor((Math.random()* 100))'會做的事情。 – Quincy