Преобразуйте строку в число и добавьте единицу

94

Я хочу превратить значение, которое я получаю от идентификатора, в число и добавить к нему единицу, а затем передать новое значение в dosomething()функцию для использования. Когда я попробовал это, и значение было одно, я получил 11, а не 2.

$('.load_more').live("click",function() { // When user clicks
    var newcurrentpageTemp = $(this).attr("id") + 1;// Get id from the hyperlink
    alert(parseInt(newcurrentpageTemp));
    dosomething();
});
Никлас
источник

Ответы:

190

Предполагая, что вы правы и ваш идентификатор - правильный номер (без какого-либо другого текста), вы должны проанализировать идентификатор и затем добавить к нему:

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

doSomething(currentPage);
Джастин Нисснер
источник
1
@Justin Niessner, вы также можете просто сделать a + 1в конце первой строки, а не использовать ++предварительный инкрементатор во второй строке, чтобы быть более компактным.
Крис Сноуден,
@Chris - Можно, но я хотел, чтобы в примере было понятно, какая операция выполняется первой.
Джастин Нисснер 06
@ Джастин Нисснер, честно. Скобки также могут помочь уточнить порядок выполнения. +1 за четкий быстрый ответ. Просто поставь меня на это.
Крис Сноуден,
@Niklas, см. Мой ответ для однострочного варианта в квадратных скобках.
Крис Сноуден,
@JustinNiessner Спасибо!
yohannan_sobin
11

Вы пробовали немного его перевернуть?

var newcurrentpageTemp = parseInt($(this).attr("id"));
newcurrentpageTemp++;
alert(newcurrentpageTemp));
Дузер Блейк
источник
sort теперь не было числа, в котором было <div, однако теперь я получаю 11, а не 2, когда значение равно 1., поэтому оно не добавляется 1 + 1 = 2
Niklas
8

Я считаю, что вы должны добавить 1 после передачи в parseInt

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

http://jsfiddle.net/GfqMM/

cyco130
источник
7
$('.load_more').live("click",function() { //When user clicks
          var newcurrentpageTemp = parseInt($(this).attr("id")) + 1
          dosomething(newcurrentpageTemp );
      });

http://jsfiddle.net/GfqMM/

Седат Башар
источник
5

Разберите Id как строку, а затем добавьте.

например

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

У меня это работает в аналогичной ситуации для перехода на следующую страницу, например:

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

У вас должна быть возможность добавлять скобки, чтобы добиться чего-то вроде этого:

var newcurrentpageTemp = (parseInt($(this).attr("id"))) + 1;//Get the id from the hyperlink
Крис Сноуден
источник
5

Вы должны проанализировать идентификатор перед добавлением 1

 $('.load_more').live("click",function() { //When user clicks
              var newcurrentpageTemp = parseInt($(this).attr("id"));
              newcurrentpageTemp ++;
              dosomething(newcurrentpageTemp );
 });
Жан-Шарль
источник
4

Самое простое решение - изменить

  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
источник
Правильно - это самый простой вариант, и он отлично работает.
cssyphus 05
2

Решение parseInt - лучший способ, поскольку ясно, что происходит.

Для полноты картины стоит упомянуть, что это также можно сделать с помощью оператора +

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

хороший способ от http://try.jquery.com/levels/4/challenges/16 :

добавление + перед строкой без использования parseInt и parseFloat и radix и ошибок, с которыми я столкнулся из-за отсутствия параметра radix

образец

var number= +$('#inputForm').val();
Иман
источник
0
var first_value = '2';
// convert this string value into int
parseInt(first_value);
Али Умайр
источник
0

Вот такое простое и лучшее решение. возьмите строку в одной переменной и затем преобразуйте ее с помощью метода parseInt (), как показано ниже.

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

Метод parseInt () вернет такое число, как это 921795. После этого вы можете добавить любое число к своему значению.

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

Эхтешам Шами
источник
Этот ответ уже давался многократно. Чем этот ответ отличается / лучше?
Андре Кул