Làm cách nào để thêm một giá trị số nguyên bằng javascript (jquery) vào một giá trị trả về một chuỗi?


91

Tôi có một khối html đơn giản như:

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

Sử dụng jquery, tôi đang cố thêm 1 vào giá trị (8).

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

Điều gì đang xảy ra là nó xuất hiện như:

81

sau đó

811

không phải 9, đó sẽ là câu trả lời chính xác. Tôi đang làm gì sai?

Câu trả lời:


186

parseInt () sẽ buộc nó phải là kiểu số nguyên hoặc sẽ là NaN (không phải số) nếu nó không thể thực hiện chuyển đổi.

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

Tham số thứ hai (cơ số) đảm bảo rằng nó được phân tích cú pháp dưới dạng số thập phân.


10
Hãy cẩn thận với parseInt (), nó nhận ra "010" là 9 (các giá trị đứng đầu bằng số 0 được phân tích cú pháp thành hệ bát phân).
MightyE

3
Bleh, "010" phân tích cú pháp là 8 (không phải 8)
MightyE

7
@Jacob Relkin: Vì điều này rất hữu ích, tôi chỉ cho anh ấy +1. Nếu bạn biết câu trả lời hay hơn, thật tiếc bạn đã không chia sẻ nó.
ANeves cho rằng SE là xấu xa.

1
Nó có, trừ khi nó phát hiện một số 0 đứng đầu, thì nó sẽ trở thành bát phân. Một trục trặc đơn giản khi chấp nhận đầu vào của người dùng.
Diodeus - James MacFarlane

1
Nó hoạt động tốt miễn là bạn chỉ định cơ số bằng cách sử dụng tham số thứ hai: parseInt("010", 10)trả về mười.
jahroy 27/09/12

29

Phân tích cú pháp int là công cụ bạn nên sử dụng ở đây, nhưng giống như bất kỳ công cụ nào, nó phải được sử dụng đúng cách. Khi sử dụng parseInt, bạn nên luôn sử dụng tham số cơ số để đảm bảo sử dụng cơ sở chính xác

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

27

Số nguyên đang được chuyển đổi thành một chuỗi thay vì ngược lại. Bạn muốn:

var newValue = parseInt(currentValue) + 1

12

parseInt không hoạt động đối với tôi trong IE. Vì vậy, tôi chỉ đơn giản sử dụng + trên biến bạn muốn dưới dạng số nguyên.

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

4

Liên quan đến việc giải thích sai bát phân của .js - Tôi chỉ sử dụng cái này ...

parseInt(parseFloat(nv))

và sau khi thử nghiệm với các số 0 ở đầu, luôn quay lại với biểu diễn chính xác.

hi vọng điêu nay co ich.


2

Mã của bạn sẽ như thế này:

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

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

Hacks N Tricks


1

để tăng lên một, bạn có thể làm điều gì đó như

  var newValue = currentValue ++;

8
Chắc chắn là ++ currentValue?
Marcin

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

Tôi chỉ đơn giản là đã khắc phục sự cố tháng của bạn, mảng getMonth bắt đầu từ 0 đến 11.


1

Bạn có thể nhân biến với 1 để buộc JavaScript chuyển biến thành một số cho bạn và sau đó thêm nó vào giá trị khác của bạn. Điều này hoạt động vì phép nhân không bị quá tải như phép cộng. Một số người có thể nói rằng điều này kém rõ ràng hơn parseInt, nhưng đó là một cách để làm điều đó và nó vẫn chưa được đề cập đến.


0

Chỉ cần thêm một dấu cộng trước giá trị văn bản

var newValue = +currentValue + 1;

-1

Bạn có thể sử dụng phương thức parseInt () để chuyển đổi chuỗi thành số nguyên trong javascript

Bạn chỉ cần thay đổi mã như thế này

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

Câu trả lời này khác với câu trả lời đã đăng ở trên như thế nào (được đăng khoảng 10 năm trước)?
Mã Maniac
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.