2016-03-09 3 views
0

Fiddleпрогресса функция бара ломка после одного вызова

В коде при условии, если вы нажмете бой он завершит действие боевого и заполнить прогресс бара в 3 раза (равный вар авто), если вы позволите ему закончить это, а затем нажмите битву снова, индикатор выполнения достигнет значения 25 и заморозится. Почему это и как я могу это исправить?

var auto = 3; 
var nb = 0; 

var progress = function(sec) { 
    if($('#bar').val() === 0) { 
    $('#dam').html("You have hit the " + $('#monsters').val() + " for 5 damage").fadeIn(400); 
    } 
    if($('#bar').val() >= 75) { 
    $('#dam').html("You have hit the " + $('#monsters').val() + " for 5 damage").fadeOut(800); 
    } 
    var interval = 1000; //milliseconds 
    setTimeout(function() {  
    sec = sec + 25; 
    $('#bar').val(sec); 
    if (sec > 100) { 
     $('#bar').val(0); 
     sec = 0; 
     nb++; 
    } 
    if (nb < auto) progress(sec); //call self with new value 
    }, interval) 
} 

$('#battle').click(function() { 
    progress(0); //initialize progress bar 
}); 
+0

Вам только нужно сбросить "нб = 0;" снова перед выполнением вызова (0); – xwpedram

ответ

1

Проблема в том, что переменная nb не сбрасывается. После кода/условие должно работать:

if (nb < auto) 
    progress(sec); 
else 
    nb = 0; 

См работает JSFiddle

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