2016-01-01 20 views
1

新年快乐!错误的可变数据

这里是我的代码:

var totalwin,pradinisStatymas 

function Increase() 
{ 
    .... 
    .... 
    totalwin += pradinisStatymas; //I'm adding increasing totalwin by pradinisStatymas 
    return print(); 
} 


function print() 
{ 
    locale[lang][7] = "Total win: "; 
    var a="<br>"+locale[lang][7]+totalwin+"<br>"; 
    bot_debug(a,0); 
} 

$bCons = $("#botConsole"); 
function bot_debug(text,type) 
{ 
    switch(type) 
    { 
     case 0:{$bCons.css("color","#353535"); $bCons.html(text); break;} 
     case 1:{$bCons.css("color","#C12E2A"); $bCons.html(text); break;} 
     case 2:{$bCons.css("color","#419641"); $bCons.html(text); break;} 
    } 
} 

的问题是,如果我设置“pradinisStatymas” 5,它应该改变$ bCons的文字为“共赢:5”,而是它改变文本为 “共赢:05”。

如果我再增加它,它会在结尾“Total win:055”中继续添加pradinisStatymas值。

它,当我使用JavaScript控制台,而不是HTML文本的正常工作。 我想我需要做一些格式,但我不知道怎么样。 感谢您的帮助。

+4

看起来像是在混合_String_和_Number_,导致'+'运算符做_string concatenation_而不是_ addition_ –

回答

2

你忽略了最重要的一点,这就是你如何/获取pradinisStatymas哪里,但症状使得问题相当明确:pradinisStatymas的值是一个字符串。 (也许你从input元素的value得到它。)所以+=是字符串连接,而不是加法。

如果我们假设totalwin设置为0开始(因此是一个数字开始),转换pradinisStatymas到了一批+=之前,例如:

totalwin += +pradinisStatymas; 
// or 
totalwin += Number(pradinisStatymas); 
// or (if it's meant to be an integer) 
totalwin += parseInt(pradinisStatymas, 10); 
// or 
totalwin += parseFloat(pradinisStatymas); 

这些都是一些你的选择,第三个假设是一个整数(整数)。我的回答here详细介绍了各种选项。

+0

因为我们不知道'totalwin'是如何设置的,所以'foo = + foo + + bar'而不是'foo + = + bar' –

+0

在第一种情况下,+ pradinisStatymas是否将字符串转换为数字?我想阅读更多。 – christofr

+2

@christofr是的,看到一元'+'http://es5.github.io/#x11.4.6 –