Bir dize döndüren bir değere javascript (jquery) ile nasıl bir tamsayı değeri eklerim?


92

Şunun gibi basit bir html bloğum var:

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

Jquery kullanarak (8) değerine 1 eklemeye çalışıyorum.

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

Olan şu şekilde görünüyor:

81

sonra

811

9 değil, bu doğru cevap olurdu. Neyi yanlış yapıyorum?

Yanıtlar:


187

parseInt (), tamsayı türü olmaya zorlar veya dönüştürmeyi gerçekleştiremezse NaN (sayı değil) olur.

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

İkinci parametre (radix), ondalık sayı olarak ayrıştırılmasını sağlar.


10
ParseInt () konusunda dikkatli olun, "010" u 9 olarak tanır (sıfırla başlayan değerler sekizlik olarak çözümlenir).
MightyE

3
Bleh, "010" 8 olarak ayrıştırılıyor (8 değil)
MightyE

7
@Jacob Relkin: Bu yararlı olduğu için ona bir +1 daha verdim. Daha iyi bir cevap biliyorsanız, bunu paylaşmamış olmanız çok yazık.
ANeves SE'nin kötü olduğunu düşünüyor

1
Başında bir sıfır algılamadığı sürece, o zaman sekizlik olur. Kullanıcı girdisini kabul ederken ortaya çıkan basit bir hata.
Diodeus - James MacFarlane

1
İkinci parametreyi kullanarak tabanı belirttiğiniz sürece iyi çalışır: parseInt("010", 10)on değerini döndürür.
jahroy

29

Parse int burada kullanmanız gereken araçtır, ancak herhangi bir araç gibi doğru şekilde kullanılmalıdır. ParseInt kullanırken, doğru tabanın kullanıldığından emin olmak için her zaman radix parametresini kullanmalısınız.

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

27

Tamsayı, tam tersi yerine bir dizeye dönüştürülüyor. İstediğiniz:

var newValue = parseInt(currentValue) + 1

12

parseInt benim için IE'de çalışmadı. Bu yüzden tamsayı olarak istediğiniz değişkende + kullandım.

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

4

.Js'nin sekizlik yanlış yorumlanmasıyla ilgili olarak - sadece bunu kullandım ...

parseInt(parseFloat(nv))

ve baştaki sıfırlarla test ettikten sonra, her seferinde doğru temsil ile geri geldi.

Bu yardımcı olur umarım.


2

Kodunuz şöyle olmalıdır:

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

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

Hacks N Tricks


1

bir artırmak için aşağıdaki gibi bir şey yapabilirsiniz

  var newValue = currentValue ++;

8
Şüphesiz ++ currentValue?
Marcin

1
var month = new Date().getMonth();
var newmon = month + 1;
$('#month').html((newmon < 10 ? '0' : '') + newmon );

Ay sorununuzu düzelttim, getMonth dizisi 0'dan 11'e başlıyor.


1

Basitçe, metin değerinin önüne bir artı işareti ekleyin

var newValue = +currentValue + 1;

1

JavaScript'in değişkeni sizin için bir sayıya dönüştürmesini ve ardından diğer değerinize eklemesini sağlamak için değişkeni 1 ile çarpabilirsiniz. Bu işe yarar çünkü çarpma, toplama olduğu gibi aşırı yüklenmez. Bazıları bunun ayrıştırmadan daha az açık olduğunu söyleyebilir, ancak bunu yapmanın bir yolu ve henüz bahsedilmedi.


-1

Javascript'te dizeyi tam sayıya dönüştürmek için parseInt () yöntemini kullanabilirsiniz

Kodu böyle değiştirirsin

$("replies").text(parseInt($("replies").text(),10) + 1);

Bunun yukarıda verilen cevaptan farkı (yaklaşık 10 yıl önce yayınlanan)?
Code Maniac
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.