Bagaimana cara menambahkan nilai integer dengan javascript (jquery) ke nilai yang mengembalikan string?

92

Saya memiliki blok html sederhana seperti:

<span id="replies">8</span>

Menggunakan jquery saya mencoba menambahkan 1 ke nilai (8).

var currentValue = $("#replies").text();
var newValue = currentValue + 1;
$("replies").text(newValue);

Apa yang terjadi adalah seperti ini:

81

kemudian

811

bukan 9, yang merupakan jawaban yang benar. Apa yang saya lakukan salah?

rball
sumber

Jawaban:

187

parseInt () akan memaksanya menjadi tipe integer, atau akan menjadi NaN (bukan angka) jika tidak dapat melakukan konversi.

var currentValue = parseInt($("#replies").text(),10);

Parameter kedua (radix) memastikannya diuraikan sebagai angka desimal.

Diodeus - James MacFarlane
sumber
10
Hati-hati dengan parseInt (), ini mengenali "010" sebagai 9 (nilai diawali dengan nol akan diuraikan sebagai oktal).
MightyE
3
Bleh, "010" diurai sebagai 8 (bukan 8)
MightyE
7
@Jacob Relkin: Karena ini berguna, saya baru saja memberinya +1. Jika Anda mengetahui jawaban yang lebih baik, sayang Anda tidak membagikannya.
ANeves menganggap SE itu jahat
1
Itu benar, kecuali mendeteksi nol di depan, maka itu menjadi oktal. Kesalahan sederhana saat menerima masukan pengguna.
Diodeus - James MacFarlane
1
Ini berfungsi dengan baik selama Anda menentukan radix dengan menggunakan parameter kedua: parseInt("010", 10)mengembalikan sepuluh.
jahroy
29

Parse int adalah alat yang harus Anda gunakan di sini, tetapi seperti alat lainnya, alat ini harus digunakan dengan benar. Saat menggunakan parseInt, Anda harus selalu menggunakan parameter radix untuk memastikan basis yang benar digunakan

var currentValue = parseInt($("#replies").text(),10);
Jon P.
sumber
27

Integer diubah menjadi string daripada sebaliknya. Kamu ingin:

var newValue = parseInt(currentValue) + 1
Membuang
sumber
12

parseInt tidak bekerja untuk saya di IE. Jadi saya cukup menggunakan + pada variabel yang Anda inginkan sebagai integer.

var currentValue = $("#replies").text();
var newValue = +currentValue + 1;
$("replies").text(newValue);
Gareth Nel
sumber
4

Berkenaan dengan salah tafsir oktal dari .js - Saya baru saja menggunakan ini ...

parseInt(parseFloat(nv))

dan setelah menguji dengan nol di depan, kembali setiap saat dengan representasi yang benar.

semoga ini membantu.

Bill Ortell
sumber
2

Kode Anda harus seperti ini:

<span id="replies">8</span>

var currentValue = $("#replies").text();
var newValue = parseInt(parseFloat(currentValue)) + 1;
$("replies").text(newValue);

Trik Hacks N

rajeev
sumber
1

untuk bertambah satu, Anda dapat melakukan sesuatu seperti

  var newValue = currentValue ++;
alex
sumber
8
Tentunya ++ currentValue?
Marcin
1
var month = new Date().getMonth();
var newmon = month + 1;
$('#month').html((newmon < 10 ? '0' : '') + newmon );

Saya hanya memperbaiki masalah bulan Anda, array getMonth mulai dari 0 hingga 11.

Adeel Ishfaq
sumber
1

Cukup, tambahkan tanda plus sebelum nilai teks

var newValue = +currentValue + 1;
Agorreca
sumber
1

Anda dapat mengalikan variabel dengan 1 untuk memaksa JavaScript mengubah variabel menjadi angka untuk Anda dan kemudian menambahkannya ke nilai Anda yang lain. Ini berfungsi karena perkalian tidak kelebihan beban sebagai penjumlahan. Beberapa orang mungkin mengatakan bahwa ini kurang jelas daripada parseInt, tetapi ini adalah cara untuk melakukannya dan belum disebutkan.

Ryan
sumber
-1

Anda dapat menggunakan metode parseInt () untuk mengonversi string menjadi integer dalam javascript

Anda tinggal mengubah kodenya seperti ini

$("replies").text(parseInt($("replies").text(),10) + 1);
Pembuat kode
sumber
Bagaimana ini berbeda dari jawaban yang diposting di atas (yang diposting sekitar 10 tahun yang lalu)?
Kode Maniac