2016-07-05 258 views
0

您好,我在使用我的程序時遇到了一些麻煩。我在我的程序開始時設置了一些變量,但是我想用if語句改變它們。眼下的第一個if語句給我我想要的結果,但第二個else if語句可心不是工作和變量所取的「0」如何在jQuery/jS中使用if語句更改變量值

這裏的默認值是我的jQuery代碼的開始:

jQuery(".repair-grid-item1").click(function(){ 
     jQuery(".repair-grid-item1 i").toggle(); 
     jQuery(".repair-grid-item1").toggleClass("grid-active"); 
     jQuery('.repair-grid-item1').gg(); 
    }); 

    (function($){ 
    $.fn.gg = function() { 
     var price = 0; 

     var one = 0; 
     var two = 0; 
     var three = 0; 
     var four = 0; 
     var five = 0; 
     var six = 0; 

     // *** this code block is working, returning correct values *** 
     if (jQuery(".repair-grid-item").hasClass("iPhone5")) { 
     var one = 85; 
     var two = 70; 
     var three = 75; 
     var four = 65; 
     var five = 75; 
     var six = 80; 
     } 


     // *** this code block isnt working, returning default values of 0 *** 
     else if (jQuery(".repair-grid-item").hasClass("iPhone5c")) { 
     var one = 85; 
     var two = 70; 
     var three = 75; 
     var four = 65; 
     var five = 75; 
     var six = 80; 
     } 

     //one only 
     if (jQuery(".repair-grid-item1").hasClass("grid-active") && 
      !jQuery(".repair-grid-item2").hasClass("grid-active") && 
      !jQuery(".repair-grid-item3").hasClass("grid-active") && 
      !jQuery(".repair-grid-item4").hasClass("grid-active") && 
      !jQuery(".repair-grid-item5").hasClass("grid-active") && 
      !jQuery(".repair-grid-item6").hasClass("grid-active")) 
     { 
      price = one; 
      document.getElementById("total-price").innerHTML = price; 
      localStorage.setItem("sum", price); 
     } 
    }; 
})(jQuery); 

這裏是我的html一小段代碼(這是iPhone5的頁面)

  <div class="repair-grid-item repair-grid-item1 iphone5"> 
      <h3>Screen Repair</h3> 
      <i class="fa fa-check-circle-o fa-2x" aria-hidden="true"></i> 
      </div> 

iphone5c頁:

  <div class="repair-grid-item repair-grid-item1 iphone5c"> 
      <h3>Screen Repair</h3> 
      <i class="fa fa-check-circle-o fa-2x" aria-hidden="true"></i> 
      </div> 

謝謝!

+1

這可能有助於「Javascript可變範圍」http://stackoverflow.com/a/500459/2008111請參閱示例1 - 3 – caramba

+1

也許你需要[匹配案例]( http://stackoverflow.com/a/2580031/615754)你的選擇器與HTML中的類?有更多的代碼比顯示的更多嗎?除了'one',你永遠不會使用任何這些變量的值。 – nnnnnn

+0

@nnnnnn我試過你的解決方案,它的工作!謝謝! –

回答

0

問題是,您正在檢查類iPhone5c而不是類iphone5c,請注意大寫P.JQuery區分大小寫,因此您應該使用相同的大寫字母將其寫入。

因此,您的代碼在變量上存儲0,因爲它不通過if else條件。

此外,正如其他答案所述,由於範圍的原因,變量不需要在if內使用var進行重新聲明。你應該刪除它。

+0

謝謝你,這是問題! –

1

Javascript中的變量具有函數作用域。您不必在ifelse-if區塊內使用var再次聲明它們。

編輯:正如其他人指出的,問題是與css類iphone5c的情況。您正在檢查iPhone5c

+0

是的,但這並不能解釋OP詢問的行爲。重新宣佈它們不會重置它們。 – nnnnnn

+0

是的,沒錯。其他人指出,問題在於班級的情況。現在編輯我的答案。謝謝! – rkrishnan

0

對不起,我犯了一個愚蠢的錯誤,@nnnnnn指出我在正確的方向。我的情況並不一致,'iPhone5c'大寫P在我的jQuery代碼中,'iphone5c'小寫字母p在我的html中。我糾正了案件,現在它工作正常。同樣你們也是正確的,我不需要在if和else情況下每個可用的「var」infront。感謝您的幫助!並感謝@nnnnnn尋找解決方案:)