jquery / javascript中的语法或逻辑错误

时间:2013-04-08 11:55:22

标签: javascript jquery

我有一个可变数量的促销品(panels)位于滑动带中,应设置为面板宽度(300px)乘以面板数量。< / p>

警告正确的腰带。使用固定数字,滑块也可以工作。我怀疑错误发生在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;

UPDATE!以下是适合我的代码(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);

});

3 个答案:

答案 0 :(得分:1)

您需要在==语句中使用相等/身份运算符(=== / =)而不是赋值运算符else if,例如

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

另外,我认为promoslider;应该是promoslider();

答案 1 :(得分:0)

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

变量whichpanelpanelsscope部分丢失了if/else if

答案 2 :(得分:0)

您也应该将promoslider的调用放入$(window).ready,否则该函数尚不存在。此外,您必须以promoslider()方式拨打电话,promoslider单独不会拨打电话。 当然,您必须在==语句中使用等号运算符=而不是赋值运算符if else