2011-12-05 46 views
0

我有一個簡單的圖像旋轉腳本,我正在嘗試構建,但我無法學習範圍,因爲它涉及獲取變量進出JavaScript函數。jQuery/JavaScript範圍:獲取變量進出函數

這裏是我的代碼:

<script type="text/javascript"> 

jQuery(document).ready(function($) { 


    function indexUp() { 

     if (slide_curr == slide_max - 1) { 

      slide_curr = slide_max; 
      slide_prev = slide_max - 1; 
      slide_next = slide_min; 

     } else if (slide_curr == slide_max) { 

      slide_curr = slide_min; 
      slide_prev = slide_max; 
      slide_next = slide_min + 1; 

     } else { 

      slide_curr = slide_next; 
      slide_prev = slide_curr - 1; 
      slide_next = slide_curr + 1; 

     } 

    } 

    function doTransition() { 

     // turn on the display of the next slide 
     $(slides[slide_next]).css('display','block'); 
     // fade the current slide out (to zero opacity) 
     $(slides[slide_curr]).fadeOut(600, function() {}); 

    } 

    function printState() { 

     var state_str = 'slide_curr=' 
      + slide_curr 
      + '; slide_prev=' 
      + slide_prev 
      + '; slide_next=' 
      + slide_next 
      + '; slide_max=' 
      + slide_max 
      + '; slide_min=' 
      + slide_min; 
     $('#bx_state').html(state_str); 

    } 

    function doIt() { 

     doTransition(); 
     indexUp(); 
     printState(); 

    } 

    // variables 
    var slides = $('#bx_slider img'); 
    var slide_min, slide_max, slide_curr, slide_prev, slide_next; 
    // initialize the settings 
    slide_min = 0; 
    slide_max = slides.length - 1; 
    slide_curr = 0; 
    slide_prev = slide_max; 
    slide_next = 1; 

    // start it all off when the page loads 
    $(slides[slide_curr]).css('display','block'); 
    timeout = setTimeout(doIt, 3000); 


}); 

</script> 

<style type='text/css'> 
    #bx_slider img { 
      display:none; position:absolute;} 
    #bx_slider { 
      width:922px; height:530px; margin:100px auto; 
      position:relative;} 
</style> 

<div id="bx_slider"> 
    <img src="slide1.jpg" /> 
    <img src="slide2.jpg" /> 
    <img src="slide3.jpg" /> 
    <img src="slide4.jpg" /> 
    <img src="slide5.jpg" /> 
</div><!-- #bx_slider --> 

<div id='bx_state'></div> 

我試圖讓slide_curr,slide_next和slide_prev每個腳本運行時間變化,然後打印出那些在頁面中div標籤努力看看發生了什麼;然而,即使這不適合我。

這裏是腳本在行動:http://www.exit44.com/slider/

感謝您的幫助。

+0

調試DIV工作正常,我從你的鏈接頁面。 – Pointy

+0

演示:http://jsfiddle.net/ZvRAr/ –

+0

它適用於我(FF8)。 –

回答

1

我在這裏猜測,但也許這個問題與變量範圍無關。你提到你想創建一個「簡單的圖像旋轉器」。嘗試改變

timeout = setTimeout(doIt, 3000); 

timeout = setInterval(doIt, 3000); 
+0

*我試圖讓slide_curr,slide_next和slide_prev在每次腳本運行時都進行更改* ... *將這些內容打印到頁面* ... *即使這對我不起作用。思考同樣的事情,但這段似乎表明它甚至一次都不工作。你可能是對的,但這意味着這是一個措辭很差的問題。 –

+0

即使一個'setInterval()'也可以修復它,我會在'doIt()'末尾建議'setTimeout()'而不是'setTimeout()'。 –

+0

糟糕,在最後的評論中,最後一個函數應該是'setInterval()'。像這樣:http://jsfiddle.net/TjM8E/ –