Berikut ini mungkin berguna secara umum.
Pertama, bidang formulir HTML terbatas pada teks . Itu berlaku terutama untuk kotak teks, bahkan jika Anda telah bersusah payah untuk memastikan bahwa nilainya terlihat seperti angka.
Kedua, JavaScript, baik atau buruk, telah membebani +operator dengan dua makna: itu menambah angka, dan itu merangkai string. Ia memiliki preferensi untuk penggabungan, jadi bahkan ekspresi seperti 3+'4'akan diperlakukan sebagai penggabungan.
Ketiga, JavaScript akan berusaha mengubah tipe secara dinamis jika bisa, dan jika perlu. Misalnya '2'*'3'akan mengubah kedua jenis menjadi angka, karena Anda tidak dapat mengalikan string. Jika salah satunya tidak kompatibel, Anda akan mendapatkan NaN, Bukan Angka.
Masalah Anda terjadi karena data yang berasal dari formulir dianggap sebagai string, dan +karena itu kehendak akan disatukan daripada ditambahkan.
Saat membaca data numerik yang seharusnya dari formulir, Anda harus selalu mendorongnya melalui parseInt()atau parseFloat(), tergantung pada apakah Anda ingin bilangan bulat atau desimal.
Perhatikan bahwa tidak ada fungsi yang benar-benar mengubah string menjadi angka. Sebagai gantinya, itu akan mengurai string dari kiri ke kanan hingga sampai ke karakter numerik yang tidak valid atau ke akhir dan mengonversi apa yang telah diterima. Dalam kasusparseFloat , itu termasuk satu titik desimal, tetapi bukan dua.
Apa pun setelah nomor yang valid diabaikan saja. Mereka gagal jika string bahkan tidak memulai sebagai angka. Maka Anda akan mendapatkan NaN.
Teknik tujuan umum yang baik untuk angka dari formulir adalah sesuatu seperti ini:
var data=parseInt(form.elements['data'].value); // or parseFloat
Jika Anda siap untuk menyatukan string yang tidak valid ke 0, Anda dapat menggunakan:
var data=parseInt(form.elements['data'].value) || 0;