0

相同的变量 (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

})

4

1 回答 1

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,
});
于 2013-05-30T03:32:58.840 回答