Aşağıdakiler genel anlamda faydalı olabilir.
İlk olarak, HTML form alanları metinle sınırlıdır . Bu, değerin bir sayı gibi görünmesini sağlamak için acı çekmiş olsanız bile, özellikle metin kutuları için geçerlidir .
İkincisi, JavaScript, daha iyi veya daha kötü için, +
operatöre iki anlam yükledi : sayı ekler ve dizeleri birleştirir. Birleştirme tercihi olduğundan, benzer bir ifade bile 3+'4'
birleştirme olarak ele alınacaktır.
Üçüncü olarak, JavaScript türleri varsa ve gerekiyorsa dinamik olarak değiştirmeye çalışır. Örneğin '2'*'3'
, dizeleri çoğaltamayacağınız için her iki türü de sayı olarak değiştirir. Bunlardan biri uyumsuzsa, NaN
Sayı Değil alırsınız .
Sorun, formdan gelen veriler bir dize olarak kabul edilir ve bu +
nedenle eklemek yerine birleştirmek olacaktır.
Bir formdan sözde sayısal verileri okurken, bir tamsayı veya ondalık sayı isteyip istemediğinize bağlı olarak her zaman parseInt()
veya parseFloat()
simgesine basmalısınız.
Her iki işlevin de gerçekte bir dizeyi sayıya dönüştürmediğini unutmayın . Bunun yerine, geçersiz bir sayısal karaktere veya sonuna kadar dizeyi soldan sağa ayrıştırır ve kabul edileni dönüştürür. Durumunda parseFloat
, bu bir ondalık nokta içerir, ancak iki değil.
Geçerli sayıdan sonraki her şey göz ardı edilir. Dizge sayı olarak bile başlamazsa başarısız olurlar. Sonra alacaksın NaN
.
Formlardaki sayılar için iyi bir genel amaçlı teknik şöyledir:
var data=parseInt(form.elements['data'].value); // or parseFloat
Geçersiz bir dizeyi 0 ile birleştirmeye hazırsanız, şunları kullanabilirsiniz:
var data=parseInt(form.elements['data'].value) || 0;