Convertir une chaîne en nombre et en ajouter un

94

Je veux transformer la valeur que j'obtiens de l'identifiant en un nombre et y ajouter un, puis passer la nouvelle valeur dans la dosomething()fonction à utiliser. Quand j'ai essayé ceci et que la valeur est un, je récupère 11 pas 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
la source

Réponses:

190

En supposant que vous avez raison et que votre identifiant est un nombre correct (sans aucun autre texte), vous devez analyser l'identifiant, puis en ajouter un:

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

doSomething(currentPage);
Justin Niessner
la source
1
@Justin Niessner, Vous pouvez aussi simplement faire un + 1à la fin de la première ligne plutôt que d'utiliser un ++pré-incrémenteur sur une deuxième ligne pour être plus compact.
Chris Snowden
@Chris - Vous pourriez mais je voulais que l'exemple soit clair quelle opération se déroulait en premier.
Justin Niessner
@Justin Niessner, c'est juste. Les parenthèses peuvent également aider à clarifier l'ordre d'exécution. +1 pour une réponse claire et rapide. Parie-moi.
Chris Snowden
@Niklas, Voir ma réponse pour l'option d'une ligne entre crochets.
Chris Snowden
@JustinNiessner Merci!
yohannan_sobin
11

Avez-vous essayé de le retourner un peu?

var newcurrentpageTemp = parseInt($(this).attr("id"));
newcurrentpageTemp++;
alert(newcurrentpageTemp));
Doozer Blake
la source
trier ce n'était pas un nombre contenant <div mais j'obtiens maintenant 11 pas 2 quand la valeur est 1. donc il n'est pas ajouté 1 + 1 = 2
Niklas
8

Je pense que vous devriez ajouter 1 après l'avoir passé à parseInt

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

http://jsfiddle.net/GfqMM/

cyco130
la source
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
la source
5

Analysez l'ID comme une chaîne, puis ajoutez.

par exemple

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

J'ai cela fonctionne dans une situation similaire pour passer à la page suivante comme ceci:

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

Vous devriez pouvoir ajouter des crochets pour obtenir ce que vous voulez, quelque chose comme ceci:

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

Vous devez analyser l'id avant d'ajouter 1

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

La solution la plus simple ici est de changer

  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
DevlshOne
la source
Vous avez raison - c'est le plus simple et cela fonctionne parfaitement.
cssyphus
2

La solution parseInt est la meilleure façon de procéder car ce qui se passe est clair.

Par souci d'exhaustivité, il convient de mentionner que cela peut également être fait avec l'opérateur +

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

un bon moyen de http://try.jquery.com/levels/4/challenges/16 :

ajouter un + avant la chaîne sans utiliser parseInt et parseFloat et radix et les erreurs que j'ai rencontrées pour le paramètre radix manquant

échantillon

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

La solution simple et la meilleure est comme ça. prenez une chaîne dans une variable, puis convertissez-la en utilisant la méthode parseInt () comme ci-dessous.

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

parseInt () retournera le nombre comme ceci 921795. après cela, vous pouvez ajouter n'importe quel nombre à votre valeur.

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

Ehtesham Shami
la source
Cette réponse a déjà été donnée plusieurs fois. En quoi cette réponse est-elle différente / meilleure?
André Kool