Konwertuj ciąg na liczbę i dodaj jeden


94

Chcę zamienić wartość otrzymaną z identyfikatora na liczbę i dodać do niej jedną, a następnie przekazać nową wartość do dosomething()funkcji, której chcesz użyć. Kiedy próbowałem tego i wartość jest jeden, otrzymuję 11, a nie 2.

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

Odpowiedzi:


190

Zakładając, że masz rację i twój identyfikator jest prawidłową liczbą (bez żadnego innego tekstu), powinieneś przeanalizować identyfikator, a następnie dodać do niego jeden:

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

doSomething(currentPage);

1
@Justin Niessner, Możesz także po prostu zrobić a + 1na końcu pierwszej linii, zamiast używać preinkrementera ++w drugiej linii, aby być bardziej zwartym.
Chris Snowden

@Chris - Mógłbyś, ale chciałem, aby przykład był jasny, która operacja miała miejsce jako pierwsza.
Justin Niessner

@Justin Niessner, w porządku. Nawiasy mogą również pomóc wyjaśnić kolejność wykonywania. +1 za jasną szybką odpowiedź. Po prostu postaw mnie na to.
Chris Snowden

@Niklas, zobacz moją odpowiedź dla opcji jednej linii w nawiasach.
Chris Snowden

@JustinNiessner Dziękuję!
yohannan_sobin

11

Czy próbowałeś to trochę przerzucić?

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

sortuj teraz to nie była liczba, która zawierała <div, ale teraz otrzymuję 11 zamiast 2, gdy wartość wynosi 1., więc nie jest dodawany 1 + 1 = 2
Niklas

8

Uważam, że po przekazaniu go do parseInt należy dodać 1

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

http://jsfiddle.net/GfqMM/



5

Przeanalizuj identyfikator, tak jak byłby to ciąg, a następnie dodaj.

na przykład

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

Mam to działające w podobnej sytuacji przy przechodzeniu do następnej strony w ten sposób:

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

Powinieneś być w stanie dodać nawiasy, aby osiągnąć to, co chcesz, coś takiego:

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

5

Musisz przeanalizować identyfikator przed dodaniem 1

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

4

Najprostszym rozwiązaniem jest tutaj zmiana

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

do:

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

Masz rację - to JEST najprostsze i działa doskonale.
cssyphus,

2

Rozwiązanie parseInt jest najlepszym sposobem, ponieważ jest jasne, co się dzieje.

Dla kompletności warto wspomnieć, że można to również zrobić za pomocą operatora +

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

Proste i najlepsze rozwiązanie jest takie. weź łańcuch w jednej zmiennej, a następnie przekonwertuj go za pomocą metody parseInt (), jak poniżej.

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

Metoda parseInt () zwróci liczbę taką jak ta 921795. po tym możesz dodać dowolną liczbę do swojej wartości.

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


Ta odpowiedź została już udzielona wielokrotnie. W jaki sposób ta odpowiedź jest inna / lepsza?
André Kool
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.