Bardzo bardzo podstawowe pytanie, ale mam następujący HTML:

<input type="text" id="nspcc" value="0" onkeyup="doTotal();" />
<input type="text" id="barnados" value="0" onkeyup="doTotal();" />
<input type="text" id="savethechildren" value="0" onkeyup="doTotal();" />
<input type="text" id="childresnsociety" value="0" onkeyup="doTotal();" />
<input type="text" id="childreninneed" value="0" onkeyup="doTotal();" />
<input type="text" id="total" disabled="disabled"  />

I następujący jQuery:

function doTotal() {
  var one,two,three,four,five,total;
  one = $('#nspcc').val();
  two = $('#barnados').val();
  three = $('#savethechildren').val();
  four = $('#childresnsociety').val();
  five = $('#childreninneed').val();
  total = one+two+three+four+five;
  $('#total').val(total);
}

doTotal();

Prawdopodobnie robię coś głupiego, ale dlaczego total concatenate zamiast dodawać wartości? Czy muszę użyć parseInt czy coś?

1
zik 4 październik 2012, 18:58

3 odpowiedzi

Najlepsza odpowiedź

Czy muszę używać parseint lub czegoś?

Tak. Metoda {X0}} zwraca ciąg, dzięki czemu musisz upewnić się, że pracujesz na numerach (ponieważ operator {X1}} jest przeciążony, aby wykonać zarówno dodawanie, jak i włączanie w zależności od kontekstu):

one = parseInt($('#nspcc').val(), 10);
//etc...

Nie zapomnij o drugim argumencie (radix) do parseInt!

6
James Allardice 4 październik 2012, 15:00

Czy muszę używać parseint lub czegoś?

Dokładnie. val() powróci ciągi , co otrzyma włączone i nie dodawane.

Należy pamiętać, że przy użyciu parseInt powinieneś dostarczyć parametr radix (drugi) dla właściwej podstawy - 10 dla dziesiętnej, w przeciwnym razie będzie załóżmy ósemki.

one = parseInt( $('#nspcc').val() , 10);
0
Oded 4 październik 2012, 15:00

Krótka odpowiedź, tak. Będziesz potrzebował parseint () swoich wartości .val (), ponieważ są interpretacjami ciągów wartości, więc po prostu połączyć się.

0
Chris Dixon 4 październik 2012, 15:00