Чаму аператар «+» concating мае нумары?

Я хачу, каб атрымаць доступ да значэнняў, уведзеных у поле ўводу, а затым атрымаць іх суму, але браўзэр канкатэнацыі выніку. вось код

<script>

   $(document).ready(function(){
     $( "#dateSelector" ).click(function(){ 
    $(this).datepicker();
     });
   });

  $(document).ready(function(){
    $("#ocb750cb").click(function(){
      var closingBal = 0;
    var openingBal = document.getElementById("ocb750ob").value;
    alert(openingBal);
    Number(openingBal);
    var stockBal =  document.getElementById("ocb750sb").value;
    alert(stockBal);
    Number(stockBal);
    var sold = document.getElementById("ocb750sl").value; 
    alert(sold);
    var store = document.getElementById("ocb750cb");
        store.value = (stockBal + openingBal) - sold;
    });



 });



</script>



<th class = "main brand">OCB 750</th>
<th class = "main"><input type="text" maxlength="5" id="ocb750ob"></th>
<th class = "main"><input type="text" maxlength="5" id="ocb750sb"></th>
<th class = "main"><input type="text" maxlength="5" id="ocb750tl"></th>
<th class = "main"><input type="text" maxlength="5" id="ocb750sl"></th>
<th class = "main"><input type="text" maxlength="5" id="ocb750rs"></th>
<th class = "main"><input type="text" maxlength="5" id="ocb750cb"></th>

Выкажам здагадку, я ўваходжу 5 і 2 мой выхад будзе 52, а не 7, яна становіцца счапляюцца

1
Вы павінны сапраўды праверыць try.jquery.com . Акрамя таго, некаторыя з вашых HTML не з'яўляецца сапраўдным. <�Код> <�ы клас = "асноўны" клас = "брэнд" ... /> павінен быць <�ы клас = "асноўны брэнд" ... /> . Сапраўды гэтак жа, вы, верагодна, не трэба ставіць гэты клас на ўсе вашы й <�код /> элементаў.
дададзена аўтар James Donnelly, крыніца
<�Код> значэнне вяртае радок, + Аб'ядноўвае радка. <�Код> + значэнне павінен рабіць.
дададзена аўтар elclanrs, крыніца
Так як <�я> усе </я> з адказаў да гэтага часу ўдалося атрымаць гэта няправільна, я буду казаць пра гэта тут: <�б> Вам трэба будзе падаць дзесятковую (другі аргумент) пры выкарыстанні ParseInt . См stackoverflow.com/questions/ 6611824/чаму-ду-мы-патрэба ў выкарыстанні-ра & ZWNJ; Дыкс
дададзена аўтар Jon, крыніца

6 адказы

Вы павінны выкарыстоўваць ParseInt() :

store.value = ( parseInt(stockBal) + parseInt(openingBal) ) - parseInt(sold);
0
дададзена

You values have string format,you need use parceInt

0
дададзена

Значэнне тэкставага поля з'яўляецца тэкст. Вы павінны кінуць яго на нумар:

var openingBal = parseFloat(document.getElementById("ocb750ob").value);
0
дададзена
Дзярмо, я ведаў гэта, я проста спытаў, не робячы гэтага.
дададзена аўтар Swaroop Nagendra, крыніца

Я думаю, гэта таму, што ўсе зменныя здабываюцца з дапамогай getElementById ( «ID»). Значэнні з'яўляюцца «радок». Паспрабуйце зрабіць так:

var sold = parseInt(document.getElementById("id").value);

Спадзяюся, што гэта дапаможа.

0
дададзена

Вы павінны выкарыстоўваць ParseInt (х), каб пераканацца, што значэнне інтэрпрэтуецца як цэлы лік. У адваротным выпадку Javascript інтэрпрэтаваць яго як радок, так + аператар канкатэнацыі.

выкарыстанне:

 var openingBal = parseInt(document.getElementById("ocb750ob").value);

І г.д.

0
дададзена
    var stockBal =  document.getElementById("ocb750sb").value;

stockbal будзе радок, так што вы павінны разабраць яго, каб атрымаць цэлы лік

   try{
      var stockBalInt = parseInt(stockBal);
   }catch(error){
    -..handle error
   }

Так як злучыць два радкі разам, «5» + «2» = «52»

0
дададзена