2012-02-09 12 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> 

और मेरे जावास्क्रिप्ट है:

<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 के लिए कोशिश कर रहा हूँ की आवश्यकता है।

टॉम

उत्तर

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

कुछ पर विचार पर

अधिक जानकारी '* 1' बुरा शैली (संख्या/parseInt के बजाय)। – georg

+0

@ thg435 ** [उद्धरण वांछित] **। 'संख्या' एक समारोह है, और बहुत ** [धीमी] (http://jsperf.com/number-vs-parseint-vs-plus/23) ** एक सादे' * 1' से **। –

+0

इसके लिए धन्यवाद। जब मैं कुकी में मान जोड़ता हूं, तो कुकी को वापस पढ़ें, इसे दोबारा संयोजित करता है और इसे मान के रूप में खो देता है। मैंने parseInt की कोशिश की है लेकिन ऐसा लगता है कि – TMB87

5

में आपका स्वागत है जावास्क्रिप्ट करने के लिए!

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

उपयोग parseInt() का उपयोग कर पूर्णांक और उसके बाद उन पर अंकगणित कार्रवाई करने स्ट्रिंग प्रारूप में अपने मूल्य बदलने की कोशिश। parseInt http://www.javascripter.net/faq/convert2.htm#parseInt

संबंधित मुद्दे