2013-08-25 270 views
2

雖然我嘗試使用onclick嘗試觸發函數,但是當我進入控制檯時,每次點擊時都會出現此錯誤消息它:錯誤:未定義類型錯誤:undefined不是函數

Uncaught TypeError: undefined is not a function

這是我如何定義我的功能:

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(); 
+0

你「的MyFunction」的聲明可能是一些功能裏面,你想從函數外部使用它。 – Pointy

+0

你可以用jsFiddle重現問題嗎? – j08691

+0

儘管我不確定 – Hive7

回答

2

我發現最終的答案。我用這個,而不是使用的onclick方法:

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