将字符串转换为数字并添加一个

我想将从 id 中获得的值转换成一个数字,然后向其中添加一个,然后将新值传递给要使用的 dosomething()函数。当我尝试这个方法时,结果是1,我得到的是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();
});
316942 次浏览

Assuming you are correct and your id is a proper number (without any other text), you should parse the id and then add one to it:

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


doSomething(currentPage);

Parse the Id as it would be string and then add.

e.g.

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

I've got this working in a similar situation for moving to next page like this:

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

You should be able to add brackets to achieve what you want something like this:

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

Have you tried flip-flopping it a bit?

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

I believe you should add 1 after passing it to parseInt

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

http://jsfiddle.net/GfqMM/

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

http://jsfiddle.net/GfqMM/

You have to parse the id before adding 1

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

The parseInt solution is the best way to go as it is clear what is happening.

For completeness it is worth mentioning that this can also be done with the + operator

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

The simplest solution here is to change

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

to:

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

a nice way from http://try.jquery.com/levels/4/challenges/16 :

adding a + before the string without using parseInt and parseFloat and radix and errors i faced for missing radix parameter

sample

var number= +$('#inputForm').val();
var sVal = '234';
var iNum = parseInt(sVal); //Output will be 234.

http://www.jquerybyexample.net/2013/02/jquery-convert-string-to-integer.html

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

Simple and best solution is like this. take a string in one variable and then convert it using parseInt() method like below.

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

parseInt() method will return the number like this 921795. after this, you can add any number to your value.

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