为什么我的函数中没有可用的全局变量?

时间:2013-10-17 01:15:30

标签: javascript html css

当你运行一个脚本时,我注意到你写的变量只运行一次。另一方面,功能可以被多次调用。

有没有办法像函数一样多次调用一个变量?对不起这个的代码,只是一个问题。

编辑:为了澄清,我有一个用于函数的全局变量。但是,当我尝试从单独的函数调用此变量时,它不会注册,因为它现在被视为“本地”。

但是,如果我可以随意调用全局变量,那么我相信这会解决问题。

// BLITZ SKILL  // <-- My 2nd Function trying to use my global variable counter
document.getElementById("blitz").addEventListener('click', function(){
    var counter = setInterval(timer, 1000); // Trying to restart timer, does 
                                            // not register counter variable.
    var damage = Math.floor(Math.random() * characterstats.strength);
    document.getElementById("energy").innerHTML = character.energy;

    if ((damage <= 0) && (character.energy >= 5)) {
        addMessage("You miss the dragon!");
        character.energy -= 5;
    }

    else if (character.energy <= 4) {
        addMessage("Not enough energy!")
    }

    if ((damage >= 1) && (character.energy >= 5)) { 
        dragon.hp -= damage;
        document.getElementById("npchp").innerHTML = dragon.hp;
        addMessage("You hit the dragon for " + damage + " hp!");
        character.energy -= 5;
    }
    document.getElementById("energy").innerHTML = character.energy;
});

// 7. CODE TESTING AREA
var counter = setInterval(timer, 1000);  <-- MyGlobal Variable

function timer() {  //
    var count = character.energy;
    count += characterstats.energyregen;
    if (count >= 35) {
        clearInterval(counter);
    }
    document.getElementById("energy").innerHTML = count;
    character.energy = count;
}

1 个答案:

答案 0 :(得分:3)

您正在使用var。

在函数中创建一个名为counter的新局部变量

只需引用全局,而不使用定义新变量的“var”

document.getElementById("blitz").addEventListener('click', function(){
    counter = setInterval(timer, 1000); // <-- Trying to restart timer, does not
    ...