2016-01-01 3 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".

Если я увеличу его еще больше, он будет продолжать добавлять значение pradinisStatymas в конце «Всего побед: 055».

Он отлично работал, когда я использовал консоль javascript вместо html-текста. Я думаю, мне нужно сделать некоторое форматирование, но я не уверен, как это сделать. Спасибо за помощь.

+4

Похоже, вы смешиваете _String_ и _Number_, заставляя оператор '+' выполнять конкатенацию _string_ вместо _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 –

Смежные вопросы