Converti la stringa in numero e aggiungine uno


94

Voglio trasformare il valore che ottengo dall'id in un numero e aggiungerne uno, quindi passare il nuovo valore nella dosomething()funzione da utilizzare. Quando ho provato questo e il valore è uno, ricevo 11 non 2.

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

Risposte:


189

Supponendo che tu sia corretto e che il tuo id sia un numero corretto (senza altro testo), dovresti analizzare l'id e quindi aggiungerne uno:

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

doSomething(currentPage);

1
@Justin Niessner, potresti anche fare un + 1alla fine della prima riga invece di usare un ++pre-incrementatore su una seconda riga per essere più compatto.
Chris Snowden

@ Chris - Potresti, ma volevo che l'esempio fosse chiaro quale operazione stava accadendo per prima.
Justin Niessner

@ Justin Niessner, abbastanza giusto. Anche le parentesi possono aiutare a chiarire l'ordine di esecuzione. +1 per una risposta rapida e chiara però. Scommettimi e basta.
Chris Snowden

@ Niklas, vedi la mia risposta per l'opzione di una riga tra parentesi.
Chris Snowden

@JustinNiessner Grazie!
yohannan_sobin

11

Hai provato a capovolgerlo un po '?

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

ordina ora non era un numero aveva <div in esso tuttavia ora ottengo 11 non 2 quando il valore è 1. quindi non viene aggiunto 1 + 1 = 2
Niklas

8

Credo che dovresti aggiungere 1 dopo averlo passato a parseInt

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

http://jsfiddle.net/GfqMM/



5

Analizza l'ID come sarebbe una stringa e quindi aggiungi.

per esempio

$('.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

Ho funzionato in una situazione simile per passare alla pagina successiva in questo modo:

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

Dovresti essere in grado di aggiungere parentesi per ottenere ciò che desideri, qualcosa del genere:

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

5

Devi analizzare l'id prima di aggiungere 1

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

4

La soluzione più semplice qui è cambiare

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

per:

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

Hai ragione - questo è il più semplice e funziona perfettamente.
cssyphus

2

La soluzione parseInt è il modo migliore per procedere poiché è chiaro cosa sta succedendo.

Per completezza vale la pena ricordare che questo può essere fatto anche con l'operatore +

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



0
var first_value = '2';
// convert this string value into int
parseInt(first_value);

0

La soluzione semplice e migliore è così. prendi una stringa in una variabile e poi convertila usando il metodo parseInt () come sotto.

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

Il metodo parseInt () restituirà il numero come questo 921795. dopo questo, puoi aggiungere qualsiasi numero al tuo valore.

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


Questa risposta è già stata data più volte. In che modo questa risposta è diversa / migliore?
André Kool
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.