Jquery数字仅使用加法运算符表示字符串

时间:2013-05-30 03:01:58

标签: math addition parsefloat

相同的变量(119),相同的常数(100)。在使用减法和乘法运算符时,两者都被正确解释为数字,但在使用加法运算符时则不然 - 结果是字符串(119100)。但是,当我使用加法运算符应用parseFloat函数时,我得到了正确的结果(219)。 Jquery是否将'+'运算符解释为字符串连接符?

var newvotes = 0;

$(document).ready(function(e) {

//alert(1);


$('.vote').children().click(function(e) {
e.preventDefault(e);
var vote = $(this).text();
var timestamp = 1369705456;

$.ajax({
type: 'POST',
url: 'forumvote.php',
data: {'timestamp' : timestamp, 'vote': vote},
success: function(data, textStatus) {
  newvotes = data;

 },

//dataType: 'text',
async:false,
});

alert(newvotes); //119
var newvar = newvotes*100; 
var newvar2 = newvotes-100; 
var newvar3 = newvotes+100;
var newvar4 = parseFloat(newvotes) + parseFloat(100); 
alert(newvar); //11900 ok
alert(newvar2); //19 ok
alert(newvar3); //119100 returns as a string
alert(newvar4); //219 ok

})

1 个答案:

答案 0 :(得分:1)

它不是jQueries错误。这正是Javascript所做的。

如果你查看newVotes的类型,你会发现它的字符串。 (typeof(newVotes))。 二元运算符*-将其参数转换为数字。 二元运算符+如果任一参数是字符串,则将其他参数转换为字符串。否则它会将它们转换为数字。

所以你需要做的就是将你的数据转换成成功回调中的数字,所有这些都适合你:

$.ajax({
type: 'POST',
url: 'forumvote.php',
data: {'timestamp' : timestamp, 'vote': vote},
success: function(data, textStatus) {
  newvotes = parseFloat(data);

 },

//dataType: 'text',
async:false,
});