簡體   English   中英

錯誤:未捕獲的類型錯誤:未定義不是函數

[英]Error: Uncaught TypeError: undefined is not a function

我正在嘗試制作一個 js 游戲,但是當我嘗試使用onclick觸發一個函數時,什么也沒有發生,然后當我進入控制台時,每次單擊它時都會出現此錯誤消息:

未捕獲的類型錯誤:未定義不是函數

這就是我定義我的函數的方式:

var myfunction = function () {

我知道這與函數無關,盡管我在創建它之后調用它並且它工作正常。

我還通過在 onclick 中放置警報來檢查它是否是點擊,盡管效果很好。

我知道這是一個常見的問題,盡管看了其他人並沒有發現任何問題。

http://jsfiddle.net/Hive7/DQnmF/

JavaScript:

var attack = function () {
    while (slaying === true) {
        if (youHit !== 1) {
            totalDamage = totalDamage += damageThisRound;
            document.getElementById('hit').style.display = 'inline';  
            //alert('You hit!!! ' + totalDamage * 10 + ' damage');
            health = health - totalDamage * 10;
            setTimeout(function(){document.getElementById('health').style.width = health + 'px'}, 400);
            setTimeout(function(){document.getElementById('hit').style.display = 'none'}, 500);
            if (totalDamage >= 4) {
                //alert('the dragons dead');
                slaying = false;
            }
        } else {
            document.getElementById('miss').style.display = 'inline'; 
            setTimeout(function(){document.getElementById('miss').style.display = 'none'}, 500);
            //alert('You missed');
        }
        slaying = false;
    }
}

document.getElementById('character').style.color = '#ccc';
document.getElementById('enemy').style.position = 'absolute';
document.getElementById('enemy').style.right = '0';
document.getElementById('game').style.position = 'relative';
document.getElementById('game').style.width = '1004px';
document.getElementById('characters').style.position = 'relative';
document.getElementById('health-container').style.right = '0';
document.getElementById('health-container').style.position = 'absolute';
document.getElementById('health-container').style.bottom = '30px';
document.getElementById('health-container').style.width = '200px';
document.getElementById('health-container').style.height = '41px';
document.getElementById('health').style.backgroundColor = 'red';
document.getElementById('health').style.height = '41px';
document.getElementById('health').style.width = '200px';
document.getElementById('miss').style.position = 'absolute';
document.getElementById('miss').style.right = '20px';
document.getElementById('miss').style.bottom = '120px';
document.getElementById('miss').style.display = 'none';
document.getElementById('hit').style.position = 'absolute';
document.getElementById('hit').style.right = '20px';
document.getElementById('hit').style.bottom = '120px';
document.getElementById('hit').style.display = 'none';
var slaying = true;
var youHit = Math.floor(Math.random() * 6 + 1);
var totalDamage = 0;
var damageThisRound = Math.floor(Math.random() * 4 + 1);
var num = document.getElementById('health').style.width.length - 2;
var health = document.getElementById('health').style.width;
health = health.substring(0, num);
attack();

我最終找到了答案。 我使用它而不是使用 onclick 方法:

document.getElementById('attack').addEventListener('click', function() {
    myfunction();
}, false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM