javascript
  • jquery
  • 2013-10-04 65 views 0 likes 
    0

    我有一段代码,我已经写了应该跟踪哪个形象是要在其上按下按钮,根据页面上的下一个出现JavaScript变量越来越设置为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; 
           } 
          }); 
         }); 
    

    令人困惑的是,如果我连续点击2次#moveright按钮,偏移量将变为-1,然后变为0,并保持循环遍历2个值。 #moveleft按钮几乎会发生同样的情况。它循环通过值0和1.

    我很困惑,因为唯一的地方,我设置偏移变量为0是如果超过4或低于-4,我没有看到它的原因在进入2或-2后设置为0。

    +0

    你最好在jsfiddle上提供一个现实的例子,因为偏移操作在你的代码中非常混乱,很难对100%发生什么事情充满信心。 – kasitan

    +0

    这两个移动功能之间有很多冗余。将事件委托给父元素,构建一个移动函数来处理点击事件,并且很可能问题会自行解决。 – itmitica

    +0

    代码中的偏移量在哪里初始化? – Sid

    回答

    1

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

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

    +0

    是的,你是对的只是注意到了。深夜编码... – aoa

    1

    删除从var negoff = "false";var posoff = "false";引用。

    您的代码可能会重构一些,但这不是在这里,也不在那里。问题的症结在于"false" == true,因为非空字符串是JavaScript中的真值。我认为这只是一个错字,但是发生了什么:

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

    相关问题