2013-04-08 59 views
0

我有一個滑動腰帶中可變數量的促銷項目(panels),應該設置爲面板的寬度(300px)乘以面板的數量。jquery/javascript中的語法或邏輯錯誤

它提醒正確的皮帶尺寸。固定數字滑塊也可以工作。我懷疑錯誤在if/else if部分。我甚至不確定這是否是有效的Javascript語法。

任何提示表示讚賞。

$(window).ready(function(){ 
     var whichpanel = 1; 
     var panels = $(".panel").length; 
     var beltsize = panels*300; 
     $('.belt').css({'width':beltsize}); 
    }); 

    $(window).ready(function promoslider(){ 
     if (panels>whichpanel){ 
      $('.belt').delay(7000).animate({'left':'-=300'}, 500); 
      whichpanel += 1;  
     } 
     else if (panels=whichpanel){ 
      $('.belt').delay(7000).animate({'left':'0'}, 500); 
      whichpanel = 1; 
     } 
     setTimeout(promoslider, 0); 

    }); 
    promoslider; 

更新!下面是我現在工作的代碼(http://jsfiddle.net/zr5Nd/10/):

$(window).ready(function() { 
var whichpanel = 1; 
var panels = $(".panel").length; 
var beltsize = panels * 300; 
$('.belt').css({ 
    'width': beltsize 
}); 

function movingdiv() { 
    if (panels > whichpanel) { 
     //alert('Panels:' + panels + '/whichpanel:' + whichpanel); 
     $('.belt').delay(1000).animate({ 
      'margin-left': '-=300px' 
     }, 500); 
     whichpanel += 1; 

    } else if (panels == whichpanel) { 
     //alert('Panels:' + panels + '/whichpanel:' + whichpanel); 
     $('.belt').delay(1000).animate({ 
      'margin-left': '0' 
     }, 500*panels); 
     whichpanel = 1; 

    } else { 
     alert('3'); 
    } 
    setTimeout(movingdiv, 0); 
} 

setTimeout(movingdiv, 0); 

});

+0

我改變了promoslider;到promoslider();也把它放在就緒功能裏面,也改變了操作員,但它仍然不動。必須有一個或多個額外的錯誤... – user2164882 2013-04-08 12:21:04

+0

這是它的一個小提琴:http://jsfiddle.net/Coffeehouse/zr5Nd/3/因爲它仍然不起作用 – user2164882 2013-04-08 13:22:00

回答

1

您需要在else if語句中使用等號/身份運算符(==/===)而不是分配運算符=,例如,

else if (panels == whichpanel){ 
    $('.belt').delay(7000).animate({'left':'0'}, 500); 
    whichpanel = 1; 
} 

而且,我相信promoslider;應該是promoslider();

+0

好吧,我改變了兩個(雖然它以前工作與promoslider括號)。但是必須有一個額外的錯誤,因爲它仍然不動。 – user2164882 2013-04-08 12:19:50

+0

@ user2164882你可以用你的HTML/jQuery製作一個小小的jsFiddle嗎?我需要你的HTML。那麼我可以很快修復它。 – lifetimes 2013-04-08 12:20:43

+0

這裏是小提琴:http://jsfiddle.net/Coffeehouse/zr5Nd/3/ – user2164882 2013-04-08 12:59:55

0

使用panels === whichpanel代替panels=whichpanel

變量whichpanelpanels已經失去了scopeif/else if部分。

0

您應該將promoslider的調用寫入$(window).ready,因爲該功能在其他情況下還不存在。此外,您必須以這種方式撥打電話promoslider()promoslider本身不會導致呼叫。 當然,您必須在if else-陳述中使用等號運算符==而不是分配運算符=