由于某种原因,我的setInterval不再起作用了

时间:2014-04-11 00:32:30

标签: javascript html setinterval

所以我有这个按钮,增加了我的增量游戏所需的剑,剑应该每秒增加一个灵魂(游戏中的"金钱")它有效昨天,我刚刚改变了一些CSS,所以我不知道它为什么不再工作了。

<button class="muchFancy" onclick="buySword()"> Buy a Sword </button>
var Swords = 0;

function autoSoul(number) {
    souls = souls + number;
    document.getElementById('souls').innerHTML = souls;
}

function buySword() {
   var swordCost = Math.floor(30 * Math.pow(1.25, Swords));
   if (souls >= swordCost) {
       Swords = Swords + 1;
       souls = souls - swordCost;
       document.getElementById("Swords").innerHTML = Swords;
       document.getElementById("souls").innerHTML  = souls;
   };
   var nextSword  = Math.floor(30 * Math.pow(1.25, Swords));
   document.getElementById('swordCost').innerHTML = nextSword;
};

window.setInterval(function(){
    autoSoul(Swords);
}, 1000);

所以,当我买一把剑时,它不会每秒增加一个灵魂,它什么都不做......它昨天起作用,所以我不知道它为什么不起作用

(实际上我并不是唯一一个处理代码的人,但他答应我他没有改变javascript上的任何内容......)

1 个答案:

答案 0 :(得分:0)

试试这个。我认为你的souls变量正在被提升或其他什么。

Fiddle

<强> HTML

<button class="muchFancy" id="muchFancy">Buy a Sword</button><br>
Swords: <div id="Swords">1</div>
souls: <div id="souls">150</div>
Cost: <div id="swordCost">5</div>

<强> JS

var Swords = 1;
var souls = 150;

function autoSoul(number) {
    souls = souls + number;
    document.getElementById('souls').innerHTML = souls;
}

function buySword() {
    var swordCost = Math.floor(30 * Math.pow(1.25, Swords));
    if (souls >= swordCost) {
        Swords = Swords + 1;
        souls = souls - swordCost;
        document.getElementById("Swords").innerHTML = Swords;
        document.getElementById("souls").innerHTML = souls;
    }
    var nextSword = Math.floor(30 * Math.pow(1.25, Swords));
    document.getElementById('swordCost').innerHTML = nextSword;
}

window.setInterval(function () {
    autoSoul(Swords);
}, 1000);

document.getElementById("muchFancy").addEventListener("click", function(){
    buySword();
});