Konvertieren Sie eine Zeichenfolge in eine Zahl und fügen Sie eine hinzu

94

Ich möchte den Wert, den ich von der ID erhalte, in eine Zahl umwandeln und eine hinzufügen und dann den neuen Wert an die dosomething()zu verwendende Funktion übergeben. Als ich dies versuchte und der Wert eins ist, bekomme ich 11 zurück, nicht 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
quelle

Antworten:

189

Angenommen, Sie sind korrekt und Ihre ID ist eine richtige Nummer (ohne anderen Text), sollten Sie die ID analysieren und dann eine hinzufügen:

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

doSomething(currentPage);
Justin Niessner
quelle
1
@Justin Niessner, Sie können auch einfach + 1am Ende der ersten Zeile einen Vorgang ausführen, anstatt einen ++Vorinkrementierer in einer zweiten Zeile zu verwenden, um kompakter zu sein.
Chris Snowden
@ Chris - Sie könnten, aber ich wollte, dass das Beispiel klar macht, welche Operation zuerst stattfand.
Justin Niessner
@ Justin Niessner, fair genug. Klammern können auch zur Verdeutlichung der Ausführungsreihenfolge beitragen. +1 für eine klare, schnelle Antwort. Wetten Sie mich einfach darauf.
Chris Snowden
@Niklas, siehe meine Antwort für die einzeilige Option in Klammern.
Chris Snowden
@ JustinNiessner Danke!
Yohannan_sobin
11

Haben Sie versucht, es ein bisschen umzudrehen?

var newcurrentpageTemp = parseInt($(this).attr("id"));
newcurrentpageTemp++;
alert(newcurrentpageTemp));
Doozer Blake
quelle
sortiere es jetzt war keine Zahl mit <div drin, aber ich bekomme jetzt 11 nicht 2, wenn der Wert 1 ist, also wird es nicht hinzugefügt 1 + 1 = 2
Niklas
8

Ich glaube, Sie sollten 1 hinzufügen, nachdem Sie es an parseInt übergeben haben

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

http://jsfiddle.net/GfqMM/

cyco130
quelle
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
quelle
5

Analysieren Sie die ID wie eine Zeichenfolge und fügen Sie sie hinzu.

z.B

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

Ich habe dies in einer ähnlichen Situation, um zur nächsten Seite wie dieser zu gelangen:

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

Sie sollten in der Lage sein, Klammern hinzuzufügen, um das zu erreichen, was Sie möchten:

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

Sie müssen die ID analysieren, bevor Sie 1 hinzufügen

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

Die einfachste Lösung besteht darin, Änderungen vorzunehmen

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

zu:

  var newcurrentpageTemp = (($(this).attr("id")) * 1) + 1;//Get the id from the hyperlink
DevlshOne
quelle
Richtig, das ist das Einfachste und es funktioniert perfekt.
Cssyphus
2

Die parseInt-Lösung ist der beste Weg, da klar ist, was passiert.

Der Vollständigkeit halber ist zu erwähnen, dass dies auch mit dem Operator + erfolgen kann

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

ein schöner Weg von http://try.jquery.com/levels/4/challenges/16 :

Hinzufügen eines + vor dem String ohne Verwendung von parseInt und parseFloat und radix und Fehler, denen ich wegen fehlender radix-Parameter ausgesetzt war

Stichprobe

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

Einfache und beste Lösung ist so. Nehmen Sie einen String in eine Variable und konvertieren Sie ihn dann mit der folgenden parseInt () -Methode.

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

Die Methode parseInt () gibt die Nummer wie folgt zurück: 921795. Danach können Sie Ihrem Wert eine beliebige Nummer hinzufügen.

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

Ehtesham Shami
quelle
Diese Antwort wurde bereits mehrfach gegeben. Wie ist diese Antwort anders / besser?
André Kool