Ubah string menjadi angka dan tambahkan satu

94

Saya ingin mengubah nilai yang saya dapatkan dari id menjadi angka dan menambahkan satu ke dalamnya lalu meneruskan nilai baru ke dalam dosomething()fungsi untuk digunakan. Ketika saya mencoba ini dan nilainya satu, saya mendapatkan kembali 11 bukan 2.

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

Jawaban:

190

Dengan asumsi Anda benar dan id Anda adalah angka yang tepat (tanpa teks lain), Anda harus mengurai id dan kemudian menambahkannya:

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

doSomething(currentPage);
Justin Niessner
sumber
1
@Justin Niessner, Anda juga bisa melakukan a + 1di akhir baris pertama daripada menggunakan ++pre-incrementer di baris kedua agar lebih kompak.
Chris Snowden
@ Chris - Anda bisa, tetapi saya ingin contohnya menjelaskan operasi mana yang terjadi pertama kali.
Justin Niessner
@ Justin Niessner, cukup adil. Tanda kurung juga dapat membantu memperjelas urutan eksekusi. 1 untuk jawaban cepat yang jelas. Taruhan saja aku untuk itu.
Chris Snowden
@Niklas, Lihat jawaban saya untuk opsi satu baris dalam tanda kurung.
Chris Snowden
@JustinNiessner Terima kasih!
yohannan_sobin
11

Sudahkah Anda mencoba flip-flopping sedikit?

var newcurrentpageTemp = parseInt($(this).attr("id"));
newcurrentpageTemp++;
alert(newcurrentpageTemp));
Doozer Blake
sumber
Urutkan sekarang bukan angka yang <div di dalamnya namun sekarang saya mendapatkan 11 bukan 2 ketika nilainya 1. jadi tidak ditambahkan 1 + 1 = 2
Niklas
8

Saya yakin Anda harus menambahkan 1 setelah meneruskannya ke parseInt

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

http://jsfiddle.net/GfqMM/

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

http://jsfiddle.net/GfqMM/

Sedat Başar
sumber
5

Parsing Id seperti itu akan menjadi string dan kemudian tambahkan.

misalnya

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

Saya mendapatkan ini berfungsi dalam situasi yang sama untuk pindah ke halaman berikutnya seperti ini:

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

Anda harus dapat menambahkan tanda kurung untuk mencapai apa yang Anda inginkan seperti ini:

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

Anda harus mengurai id sebelum menambahkan 1

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

Solusi paling sederhana di sini adalah berubah

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

untuk:

  var newcurrentpageTemp = (($(this).attr("id")) * 1) + 1;//Get the id from the hyperlink
DevlshOne
sumber
Benar Anda - itu IS yang paling sederhana, dan itu bekerja dengan sempurna.
cssyphus
2

Solusi parseInt adalah cara terbaik untuk pergi karena sudah jelas apa yang terjadi.

Untuk kelengkapan, perlu disebutkan bahwa ini juga dapat dilakukan dengan operator +

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

cara yang bagus dari http://try.jquery.com/levels/4/challenges/16 :

menambahkan + sebelum string tanpa menggunakan parseInt dan parseFloat dan radix dan kesalahan yang saya hadapi untuk parameter radix yang hilang

Sampel

var number= +$('#inputForm').val();
Iman
sumber
0
var first_value = '2';
// convert this string value into int
parseInt(first_value);
Ali Umair
sumber
0

Solusi sederhana dan terbaik seperti ini. ambil string dalam satu variabel lalu konversikan menggunakan metode parseInt () seperti di bawah ini.

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

metode parseInt () akan mengembalikan angka seperti ini 921795. setelah ini, Anda dapat menambahkan angka apa pun ke nilai Anda.

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

Ehtesham Shami
sumber
Jawaban ini telah diberikan berkali-kali. Bagaimana jawaban ini berbeda / lebih baik?
André Kool