2012-02-09 49 views
5

Tôi đang thêm giá trị từ các danh sách chọn (hoặc trừ) và tôi dường như không thể làm cho nó không nối chuỗi.jQuery thêm chuỗi và không ghép nối

danh sách lựa chọn của tôi là:

<li class="extraHeight"> 
    <asp:Image runat="server" CssClass="iconImageMove" ID="Image13" ImageUrl="~/images/icons/ABabyChg_Off.png" /> 
    <div class="flipWidth"> 
     <select name="access" class="change" id="ABabyChg_Off" runat="server"> 
      <option value="16777216">Off</option> 
      <option value="16777216">On</option> 
     </select> 
    </div> <br /> <p class="noWrap">Accessible baby changing facilities</p> 
</li> 

<li class="extraHeight"> 
    <asp:Image runat="server" CssClass="iconImageMove" ID="Image14" ImageUrl="~/images/icons/carpark_off.png" /> 
    <div class="flipWidth"> 
     <select name="access" class="change" id="carpark_off" runat="server"> 
      <option value="256">Off</option> 
      <option value="256">On</option> 
     </select> 
    </div> <br /> <p class="noWrap">Accessible Car parking facilities</p> 
</li> 

Và javascript của tôi là:

<script>  

     $("select").change(function() { 

      var currentAccess = "0"; 
      var currentText = $(":selected", this).text(); 
      var value = $(this).val() 
      alert(currentAccess); 
      if(currentText == "Off") 

        { 
         currentAccess -= value; 
        } 
      if(value != "0") {   
      if(currentText == "On") 
        { 
         currentAccess += value; 
        } 
      } 

       $.cookie("accessReqs", currentAccess, { expires: 24 }); 
       alert(currentAccess); 

      }) 

    </script> 

Về cơ bản tôi đang cố gắng để có currentAccess có giá trị hiện tại là một số nguyên và thêm và trừ như là cần thiết.

Tom

Trả lời

3

Sử dụng số nguyên thay vì chuỗi.

  • Khởi tạo currentAccess ở mức 0.
  • Nhà điều hành -= để lại ít chỗ mơ hồ, nhưng nhà điều hành
    += có thể có nghĩa là "nối một chuỗi" hoặc "thêm số".
  • Để làm cho nó rõ ràng hơn, convert the variable to a number, ví dụ bằng cách sử dụng *1 (lần 1)

đang Cập nhật:

$("select").change(function() { 

    var currentAccess = 0; // Instead of "0" 
    var currentText = $(":selected", this).text(); 
    var value = $(this).val() * 1; 
    alert(currentAccess); 
    if (currentText == "Off") 
    { 
     currentAccess -= value; 
    } 
    if (value != 0) { 
     if (currentText == "On") { 
      currentAccess += value; 
     } 
    } 

    $.cookie("accessReqs", currentAccess, { 
     expires: 24 
    }); 
    alert(currentAccess);  
}); 
+1

Một số xem xét '* 1' (thay vì số/parseInt) kiểu xấu. – georg

+0

@ thg435 ** [cần dẫn nguồn] **. 'Số' là một hàm, và nhiều ** [chậm hơn] (http://jsperf.com/number-vs-parseint-vs-plus/23) ** so với một' * 1' đơn giản. –

+0

Cảm ơn vì điều này. Khi tôi thêm giá trị cho cookie, sau đó đọc lại cookie, nó sẽ hợp lại nó và mất nó như một giá trị. Tôi đã thử parseInt nhưng nó dường như không làm nhiều – TMB87

5

Chào mừng bạn đến javascript!

alert(1+1); -> 2 
alert("1"+"1"); -> 11 
alert(Number("1")+Number("1")); -> 2 
Các vấn đề liên quan