0

我有一段我写的代码,它应该根据按下的按钮来跟踪页面上接下来将出现的图像

 $(document).ready(function(){
            $("#moveleft").click(function(){
                var negoff = "false";
                $("#slideshow>ul>li").animate({left: '-=' + actualwidth + 'px'}, 500);
                $("#slideshow>ul>li:first-child").remove();
                offset++;
                console.log("Offset: " + offset);
                if(offset > 4){
                    offset = 0;
                }
                if(offset < 0){
                    offset = offset * -1;
                    negoff = true;
                }
                $("#slideshow>ul").append('<li><img src="images/' + 
                    contentcategories[offset] + '.jpg"/></li>');
                $("#slideshow>ul>li:last-child").css({width: picturewidth +  "px", 
                    left: + 6 * actualwidth + "px"});
                if(negoff){
                    offset = offset * -1;
                    negoff = false;
                }
            });
            $("#moveright").click(function(){
                var posoff = "false";
                $("#slideshow>ul>li").animate({left: '+=' + actualwidth + 'px'}, 500);
                $("#slideshow>ul>li:last-child").remove();
                offset--;
                console.log("Offset: " + offset);
                if(offset < -4){
                    offset = 0;
                    console.log("Offset: " + offset);
                }
                if(offset > 0){
                    offset = offset * -1;
                    posoff=true;
                    console.log("Posoff: " + posoff);
                }
                $("#slideshow>ul").prepend('<li><img src="images/' + 
                    contentcategories[(contentnum - 1) + offset] + '.jpg"/></li>');
                $("#slideshow>ul>li:first-child").css({width: picturewidth +  "px", 
                    left: + 0 + "px"});
                if(posoff){
                    offset = offset * -1;
                    posoff = false;
                }
            });
        });

令人困惑的是,如果我连续单击#moveright 按钮 2 次,则偏移量变为 -1,然后变为 0,并不断循环通过 2 个值。#moveleft 按钮几乎发生了同样的事情。它在值 0 和 1 之间循环。

我对此感到困惑,因为我将偏移变量设置为 0 的唯一位置是高于 4 或低于 -4 并且在它变为 2 或 -2 后我没有看到将其设置为 0 的原因.

4

2 回答 2

1

删除 和 的var negoff = "false";引号var posoff = "false";

您的代码可以进行一些重构,但这既不是这里也不是那里。问题的症结在于,"false" == true非空字符串是 JavaScript 中的真值。我认为这只是一个错字,但这是正在发生的事情:

offset从 0 开始。如果#moveLeft被点击,它会递增到 1。然后它会乘以 -1,因为这if(negoff)将是真的。所以现在它是-1,下一次单击会将其增加到 0。冲洗并重复。情况正好相反#moveRight

于 2013-10-04T08:59:24.557 回答
1

让我们看看你在这里做什么。您正在将字符串写入变量,尝试将其用作布尔值,即 true 和 false,然后,在您的 if 语句中,您正在检查变量是否为:not null、not undefined、not false . 这里棘手的是它实际上是定义的,它不是空的,它是一个字符串(“false”)

长话短说:删除“假”周围的“”,那应该没问题。

于 2013-10-04T09:02:32.117 回答