javascript
  • jquery
  • 2013-10-04 79 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

    相關問題