Javascript检查变量。然后获得每秒++

时间:2014-08-23 00:45:22

标签: javascript html

我有一个问题,我想检查一个变量。如果它的0然后在1.5秒后获得++。如果它的10然后在.4之后获得++。它很复杂。它没有真正起作用。我的代码到目前为止:< / p>

     if(road == 1){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},1400);}
else if(road == 2){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},1300);}
else if(road == 3){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},1200);}
else if(road == 4){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},1100);}
else if(road == 5){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},1000);}
else if(road == 6){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},900);}
else if(road == 7){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},800);}
else if(road == 8){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},600);}
else if(road == 9){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},400);}
else if(road == 10){setInterval(function(){stamina = stamina+1;document.getElementById("stamina").innerHTML = stamina;},200);}
else{setInterval(function(){stamina++;document.getElementById("stamina").innerHTML = stamina;},1500);}

构建道路的代码就是:

function build_road() {
    if ((wood + tavern) >= 29 && stone > 4 && road < 10) {
        road++;
        document.getElementById("road_count").innerHTML = road;
        wood = (wood + tavern) - 20;
        stone = stone - 5;
        document.getElementById("wood").innerHTML = wood;
        document.getElementById("stone").innerHTML = stone;
        exp = exp + 20;
        var x = document.getElementById("PROGRESS");
        x.setAttribute("value", exp);
        x.setAttribute("max", max);
        if (exp == 100) {
            exp = 0;
            level++;
            document.getElementById("level").innerHTML = level;
        }
        alert("Congratulations,You've create a Road,Now you gain stamina slightly faster.");
    }
    else {
        alert("You need: 30Wood,5Stone .Maximum 10 Roads.")
    }
}

1 个答案:

答案 0 :(得分:0)

  1. 制作可重复使用的功能(当您遇到一段代码时,将其分解为小功能时,这通常是一种很好的做法):

    var staminaIncreaseTimer = null;
    
    function configureStaminaIncrease(delay) {
        if (staminaIncreaseTimer !== null)
            clearInterval(staminaIncreaseTimer);
        staminaIncreaseTimer = setInterval(function () {
            increaseStamina();
        }, delay);
    }
    
    function increaseStamina() {
        stamina += 1;
        document.getElementById("stamina").innerHTML = stamina;
    }
    
  2. 阵列解决方案(Jay Harris建议)

    var roadIndex = road-1;
    var ROAD_DELAYS = [1400, 1300, 1200, /*...*/];
    var DEFAULT_DELAY = 1500;
    if (roadIndex < ROAD_DELAYS.length) {
        configureStaminaIncrease(ROAD_DELAYS[roadIndex]);
    } else {
        configureStaminaIncrease(DEFAULT_DELAY);
    }
    
  3. 使用switch代替你的解决方案if-elseif mess:

    switch (road) {
        case 1:
            configureStaminaIncrease(1400);
            break;
        case 2:
            configureStaminaIncrease(1300);
            break;
        case 3:
            configureStaminaIncrease(1200);
            break;
        //and so on...
        default:
            configureStaminaIncrease(1500);
    }