2012-02-09 67 views
5

我從選擇列表(或減法)添加值,我似乎無法使它不連接字符串。jQuery添加字符串,而不是連接

我的選擇列表是:

<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> 

而且我的JavaScript是:

<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> 

基本上我想有currentAccess有電流值作爲整數加減原樣需要。

Tom

回答

3

使用整數而不是字符串。

  • 初始化爲currentAccess爲零。
  • -=運營商留下少許地方歧義,但運營商可以意味着「串聯一個字符串」或「添加一個數字」。
  • 爲了使它更加明顯,convert the variable to a number,例如通過使用*1(次1)

更新代碼:

$("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

有些人認爲

更多信息'*。 – georg 2012-02-09 10:27:58

+0

@ thg435 ** [需要的引證] **。 'Number'是一個函數,並且比普通的'* 1'多** [更慢](http://jsperf.com/number-vs-parseint-vs-plus/23)**。 – 2012-02-09 10:33:34

+0

謝謝你。當我將該值添加到cookie中時,然後讀取cookie,它會再次進行分析並將其作爲值丟失。我試過parseInt,但它似乎沒有太大的作用 – TMB87 2012-02-09 10:54:35

5

歡迎的JavaScript!

alert(1+1); -> 2 
alert("1"+"1"); -> 11 
alert(Number("1")+Number("1")); -> 2