2017-09-21 111 views
1

當用戶選中一個複選框時,我需要更新我的'calculated_price'值。 alert()工作和計算正確,但我不知道它爲什麼只顯示「0」,而不是改變。將變量值從if語句傳遞到if/else之外

$(document).ready(function() { 
    //Global Configurations. 
    var calculated_price = 0; 
    var final_price = "قیمت نهایی برابر است با " + calculated_price + " تومان "; 

    // Menu Items. 
    var cbSelector = $("[name='cb[]']"); 
    cbSelector.change(function() { 
     if (this.checked){ 
      var currentCBSelected = $(this); 
      var currentCBValue = parseInt(currentCBSelected.val()); 

      var previousNSelected = $(this).prev("input"); 
      var previousNValue = parseInt(previousNSelected.val()); 

      previousNSelected.css("visibility","visible"); 

      calculated_price += currentCBValue * previousNValue; 
     } 
     else { 
      // Do somethings. 
     } 

    }); 

    // Calculated Price. 
    $("#calculated_price").html(final_price); 

}); 

這裏是我的index.html文件將被選中複選框顯示號碼輸入,它們的值可以改變(所以calculated_price必須改變)

<!-- Page Logo --> 
    <div> 
     <a href="#time_picker"><img id="page_logo" src="img/logo.png"></a> 
    </div> 

    <!-- Time Picker --> 
    <div id="time_picker"> 
     <div id="time_picker_in"> 
      <p>زمان ورود: </p> 
     </div> 
     <div id="time_picker_out"> 
      <p>زمان خروج: </p> 
     </div> 
    </div> 

    <!-- Menu Items --> 
    <div> 
     <ul id="menu_items"> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="12000" /> 
       <label for="text1">چای و ساید کیک</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="5000" /> 
       <label for="text2">چای سیاه</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="7000" /> 
       <label for="text3">چای سبز</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="7000" /> 
       <label for="text4">چای و خرما</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="7000" /> 
       <label for="text5">چای و نبات</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="7000" /> 
       <label for="text6">چای و دارچین</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="15000" /> 
       <label for="text7">آبمیوه(پرتقال،هندوانه،طالبی)</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="15000" /> 
       <label for="text8">هات چاکلت</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="15000" /> 
       <label for="text9">نسکافه</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="15000" /> 
       <label for="text10">کاپوچینو</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="15000" /> 
       <label for="text11">شکلات گلاسه</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="15000" /> 
       <label for="text12">سالاد روز</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="10000" /> 
       <label for="text13">سیب زمینی</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="15000" /> 
       <label for="text14">غذای روز کودک</label> 
      </li> 
      <li> 
       <input type="number" name="n[]" value="1" class="num_input"/> 
       <input type="checkbox" name="cb[]" value="10000" /> 
       <label for="text15">بستنی(12 اسکوپ)</label> 
      </li> 
     </ul> 
    </div> 

    <!-- White Space --> 
    <div id="white_space"></div> 

    <!-- Calculated Price --> 
    <div id="calculated_price"></div> 
+0

也添加您的網頁代碼 –

+1

您計算後似乎無法顯示該值。如果您只顯示0的初始值並且從不更新顯示,那麼它只會顯示0. – David

+2

您需要在*中添加** $(「#calculated_price」)。html(final_price); ** * *更改** –

回答

0

問題似乎是你希望更改calculate_price變量來自動反映在你的final_price字符串中,但它不會那樣工作。每當calculate_price變量發生變化時,您都必須將其插入到final_price字符串中,然後再次更新html。

改變這一行:

var final_price = "قیمت نهایی برابر است با " + calculated_price + " تومان "; 

到:

var final_price = "قیمت نهایی برابر است با {calc} تومان "; 

在末尾加上這一行你的if語句:

$("#calculated_price").html(final_price.replace("{calc}", calculated_price.toString()); 

而且你的最後一行更改爲:

$("#calculated_price").html(final_price.replace("{calc}", calculated_price.toString()); 
+0

你能解釋一下你實際改變了什麼嗎?這些變化做了什麼? – GrumpyCrouton

+0

完成。我知道它可能不是最好的解決方案,但我認爲它應該能夠輕鬆理解。 – lancew

+0

謝謝。我不熟悉JavaScript中的花括號語法,但我也不是JavaScript開發人員。我不確定它是多麼普通的知識,但在PHP中,基本上你在那裏做出的改變不會有任何改變。 – GrumpyCrouton