2013-08-25 272 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); 
相关问题