JS:你的功能不是功能!类型错误

时间:2016-07-03 13:18:12

标签: javascript

我有一个小型RTS游戏,你可以攻击一个怪物。我希望它设置当游戏加载或启动时,strike()功能将在3秒后触发。但是,当我在下面运行此代码时,我得到一个类型错误,即" strike()"不是一个功能。如果它不是一个函数,它是什么呢?

如果您想知道player.cc的含义,它代表当前的角色。其余的只是指我在游戏中使用的平衡仪。

dom.el("strike").onclick = function strike() {
    HitCalc(player.cc, monster.cc);
    actor.expCounter(player.cc);
    actor.balanceCounter(player.cc, monster.cc);
};

 setTimeout(strike(), 3000);

可能有用的其他代码:

dom = {
    el: function (id){
        return document.getElementById(id);
    },

HTML:

<button id="strike" type="button" class="buttons">Strike</button>

1 个答案:

答案 0 :(得分:2)

虽然您认为在当前范围内仍然悬挂并声明了一个分配给事件处理程序的名为的函数,但您仍然误以为:它还是一个分配给属性的函数,如任何匿名的内联函数。

你需要的是:

function strike() {
    HitCalc(player.cc, monster.cc);
    actor.expCounter(player.cc);
    actor.balanceCounter(player.cc, monster.cc);
};

dom.el("strike").onclick = strike;

// Note that setTimeout expects a reference to the function rather than
// a function call!!
setTimeout(strike, 3000);