แปลงสตริงเป็นตัวเลขและเพิ่มหนึ่ง


94

ฉันต้องการเปลี่ยนค่าที่ฉันได้รับจาก id เป็นตัวเลขและเพิ่มหนึ่งค่าจากนั้นส่งค่าใหม่ไปยังdosomething()ฟังก์ชันที่จะใช้ เมื่อฉันลองสิ่งนี้และค่าคือหนึ่งฉันได้รับกลับมา 11 ไม่ใช่ 2

$('.load_more').live("click",function() { // When user clicks
    var newcurrentpageTemp = $(this).attr("id") + 1;// Get id from the hyperlink
    alert(parseInt(newcurrentpageTemp));
    dosomething();
});

คำตอบ:


190

สมมติว่าคุณถูกต้องและ ID ของคุณเป็นตัวเลขที่ถูกต้อง (โดยไม่มีข้อความอื่น) คุณควรแยกวิเคราะห์ ID จากนั้นเพิ่มหนึ่งรหัส:

var currentPage = parseInt($(this).attr('id'), 10);
++currentPage;

doSomething(currentPage);

1
@ จัสตินนีสเนอร์คุณสามารถทำ+ 1ในตอนท้ายของบรรทัดแรกแทนที่จะใช้ตัว++เพิ่มค่าล่วงหน้าในบรรทัดที่สองเพื่อให้มีขนาดกะทัดรัดมากขึ้น
Chris Snowden

@ คริส - คุณทำได้ แต่ฉันต้องการให้ตัวอย่างชัดเจนว่าการดำเนินการใดเกิดขึ้นก่อน
Justin Niessner

@ จัสตินนีสเนอร์พอสมควร วงเล็บสามารถช่วยชี้แจงลำดับการดำเนินการได้เช่นกัน +1 สำหรับคำตอบด่วนที่ชัดเจนแม้ว่า เพียงแค่เดิมพันฉันกับมัน
Chris Snowden

@Niklas ดูคำตอบของฉันสำหรับตัวเลือกหนึ่งบรรทัดแบบวงเล็บ
Chris Snowden

@JustinNiessner ขอบคุณ!
yohannan_sobin

11

ลองพลิกดูสักหน่อยหรือยัง?

var newcurrentpageTemp = parseInt($(this).attr("id"));
newcurrentpageTemp++;
alert(newcurrentpageTemp));

เรียงลำดับตอนนี้ไม่ใช่ตัวเลขที่มี <div อยู่ แต่ตอนนี้ฉันได้ 11 ไม่ใช่ 2 เมื่อค่าเป็น 1 ดังนั้นจึงไม่ได้เพิ่ม 1 + 1 = 2
Niklas



5

แยกวิเคราะห์ Id ตามที่ควรเป็นสตริงแล้วเพิ่ม

เช่น

$('.load_more').live("click",function() { //When user clicks
    var newcurrentpageTemp = parseInt($(this).attr("id")) + 1;//Get the id from the hyperlink
    alert(newcurrentpageTemp);
    dosomething();
});

5

ฉันได้ทำงานในสถานการณ์ที่คล้ายกันสำหรับการย้ายไปยังหน้าถัดไปเช่นนี้:

$("#page_next").click(function () {
    $("#pageNumber").val(parseInt($("#pageNumber").val()) + 1);
    submitForm(this);
    return false;
});

คุณควรจะเพิ่มวงเล็บเพื่อให้บรรลุสิ่งที่คุณต้องการได้ดังนี้:

var newcurrentpageTemp = (parseInt($(this).attr("id"))) + 1;//Get the id from the hyperlink

5

คุณต้องแยกวิเคราะห์รหัสก่อนเพิ่ม 1

 $('.load_more').live("click",function() { //When user clicks
              var newcurrentpageTemp = parseInt($(this).attr("id"));
              newcurrentpageTemp ++;
              dosomething(newcurrentpageTemp );
 });

4

ทางออกที่ง่ายที่สุดคือการเปลี่ยนแปลง

  var newcurrentpageTemp = $(this).attr("id") + 1;//Get the id from the hyperlink

ถึง:

  var newcurrentpageTemp = (($(this).attr("id")) * 1) + 1;//Get the id from the hyperlink

ใช่คุณ - นั่นเป็นวิธีที่ง่ายที่สุดและทำงานได้อย่างสมบูรณ์แบบ
cssyphus

2

โซลูชัน parseInt เป็นวิธีที่ดีที่สุดเนื่องจากมีความชัดเจนว่าเกิดอะไรขึ้น

เพื่อความสมบูรณ์เป็นมูลค่าการกล่าวขวัญว่าสิ่งนี้สามารถทำได้ด้วยตัวดำเนินการ +

$('.load_more').live("click",function() { //When user clicks
  var newcurrentpageTemp = +$(this).attr("id") + 1; //Get the id from the hyperlink
  alert(newcurrentpageTemp);
  dosomething();
});


0

วิธีที่ดีจากhttp://try.jquery.com/levels/4/challenges/16 :

เพิ่ม a +ก่อนสตริงโดยไม่ใช้ parseInt และ parseFloat และ radix และข้อผิดพลาดที่ฉันต้องเผชิญกับพารามิเตอร์ radix ที่หายไป

ตัวอย่าง

var number= +$('#inputForm').val();


0

วิธีแก้ที่ง่ายและดีที่สุดคือแบบนี้ ใช้สตริงในตัวแปรเดียวแล้วแปลงโดยใช้เมธอด parseInt () ดังด้านล่าง

var stringValue = '921795';
var numValue = parseInt(stringValue);

parseInt () เมธอดจะส่งคืนตัวเลขเช่นนี้ 921795 หลังจากนี้คุณสามารถเพิ่มตัวเลขใดก็ได้ในค่าของคุณ

http://www.phpcodify.com/convert-string-to-integer-using-jquery-parseint/


คำตอบนี้ได้รับหลายครั้งแล้ว คำตอบนี้แตกต่าง / ดีกว่าอย่างไร?
André Kool
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.