ฉันจะเพิ่มค่าจำนวนเต็มด้วย javascript (jquery) ให้กับค่าที่ส่งคืนสตริงได้อย่างไร


92

ฉันมีบล็อก html ง่ายๆเช่น:

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

ใช้ jquery ฉันพยายามเพิ่ม 1 ให้กับค่า (8)

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

สิ่งที่เกิดขึ้นมันปรากฏดังนี้:

81

แล้ว

811

ไม่ใช่ 9 ซึ่งจะเป็นคำตอบที่ถูกต้อง ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


187

parseInt () จะบังคับให้เป็นประเภทจำนวนเต็มหรือจะเป็น NaN (ไม่ใช่ตัวเลข) หากไม่สามารถทำการแปลงได้

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

พารามิเตอร์ตัวที่สอง (radix) ทำให้แน่ใจว่าได้แยกวิเคราะห์เป็นตัวเลขทศนิยม


10
โปรดระวัง parseInt () ซึ่งจะจดจำ "010" เป็น 9 (ค่าที่นำหน้าด้วยศูนย์จะถูกแยกวิเคราะห์เป็นฐานแปด)
MightyE

3
Bleh, "010" แยกวิเคราะห์เป็น 8 (ไม่ใช่ 8)
MightyE

7
@Jacob Relkin: เนื่องจากสิ่งนี้มีประโยชน์ฉันจึงให้ +1 แก่เขาอีกครั้ง หากคุณรู้คำตอบที่ดีกว่าก็น่าเสียดายที่คุณไม่ได้แบ่งปัน
ANeves คิดว่า SE ชั่วร้าย

1
มันไม่ได้เว้นแต่จะตรวจพบศูนย์นำหน้ามันก็กลายเป็นฐานแปด ความผิดพลาดง่ายๆเมื่อยอมรับข้อมูลของผู้ใช้
Diodeus - James MacFarlane

1
ทำงานได้ดีตราบเท่าที่คุณระบุ radix โดยใช้พารามิเตอร์ที่สอง: parseInt("010", 10)ส่งกลับสิบ
jahroy

29

Parse int เป็นเครื่องมือที่คุณควรใช้ที่นี่ แต่เช่นเดียวกับเครื่องมือใด ๆ ที่ควรใช้อย่างถูกต้อง เมื่อใช้ parseInt คุณควรใช้พารามิเตอร์ radix เสมอเพื่อให้แน่ใจว่าใช้ฐานที่ถูกต้อง

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

27

จำนวนเต็มจะถูกแปลงเป็นสตริงแทนที่จะเป็นในทางกลับกัน คุณต้องการ:

var newValue = parseInt(currentValue) + 1

12

parseInt ไม่ทำงานสำหรับฉันใน IE ผมก็เลยใช้ + กับตัวแปรที่คุณต้องการเป็นจำนวนเต็ม

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

4

เกี่ยวกับการตีความผิดฐานแปดของ. js - ฉันเพิ่งใช้สิ่งนี้ ...

parseInt(parseFloat(nv))

และหลังจากทดสอบด้วยเลขศูนย์นำหน้ากลับมาทุกครั้งด้วยการแทนค่าที่ถูกต้อง

หวังว่านี่จะช่วยได้


2

รหัสของคุณควรเป็นดังนี้:

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

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

Hacks N Tricks



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

ฉันเพิ่งแก้ไขปัญหาเดือนของคุณอาร์เรย์ getMonth เริ่มจาก 0 ถึง 11



1

คุณสามารถคูณตัวแปรด้วย 1 เพื่อบังคับให้ JavaScript แปลงตัวแปรเป็นตัวเลขให้คุณจากนั้นเพิ่มเป็นค่าอื่นของคุณ วิธีนี้ได้ผลเนื่องจากการคูณไม่ได้รับมากเกินไปเนื่องจากการเพิ่มเป็น บางคนอาจบอกว่ามันชัดเจนน้อยกว่า parseInt แต่มันเป็นวิธีที่ทำได้และยังไม่ได้กล่าวถึง


-1

คุณสามารถใช้เมธอด parseInt () เพื่อแปลงสตริงเป็นจำนวนเต็มในจาวาสคริปต์

คุณแค่เปลี่ยนรหัสแบบนี้

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

สิ่งนี้แตกต่างจากคำตอบที่โพสต์ไว้ด้านบนอย่างไร (ซึ่งโพสต์ไว้เมื่อ 10 ปีที่แล้ว)?
Code Maniac
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.