无法从主体加载调用函数(未捕获的引用错误:未定义启动)javascript

问题描述 投票:0回答:5

我有一个 body onload 调用 javascript 中的函数。我尝试了很多方法,但控制台只是打印到错误日志:未捕获的引用错误:未定义启动。我认为这可能是一个故障,如果它对您有用,请通知我。我的代码如下:

<!DOCTYPE html>
<html>
  <head>
    <title>Monster Invasion</title>
    <script type="javascript">
      var hur;
      var monsters = 10;
      var objective = false;
      var health = 100;
      var damage = 30;
      var sheild = false;
      var ea = 1;
      function start() {
        setTimeout(hurt,4000)
      }
      function hurt() {
        var newhelth = health - damage;
        
        health = newhelth;
        document.getElementById("healtw").innerHTML = health;
        start();
      }
      
      function kill() {
        if(monsters > 0) {
        monsters--;
        document.getElementById("monster1").src="dead.jpg"
        
        setTimeout(next,2000)
        }else {
          objective = true;
          document.location="endoflevel.html";
        }
      
      }
      function next() {
        document.getElementById("monster1").src="monster.jpg"
        
      }
      }
    </script>
  </head>
  <body onload="start()">
    <p id="healtw"></p>
    <embed src="guide_first_level.mp3" type="audio/mp3" hidden="true" autostart="true">
    <a id="st" onclick="kill()"><img id="monster1" src="monster.jpg"></a>
    <p id="ada"></p>
    <a href="sheild.html">Activate sheild</a>
  </body>
</html>

javascript html
5个回答
15
投票

您的脚本类型错误。

尝试这样

<script type="text/javascript">
</script>

但是,您不需要提及脚本类型。只需使用简单的脚本标签即可。

像这样

<script>
</script>

还要补充一点,在脚本标签末尾之前,您给出了额外的

}

删除它即可

function next() {
   document.getElementById("monster1").src="monster.jpg"
}
} // <-- just remove this bracket
</script>

2
投票

您的代码有两个问题。

  1. javascript 不是浏览器中脚本的有效类型。浏览器知道

    text/javascript
    ,但不仅仅是 javascript,这就是为什么你的代码没有被执行。更改类型属性或完全删除它(因为
    text/javascript
    是默认值)。

  2. 代码末尾有一个额外的括号}。删除它,您的代码将正常工作。


1
投票

对于某些使用外部 js 文件的人来说,请检查您是否链接了您的文件:)...因为我有同样的错误,但当我查看我的代码时..我没有然后链接文件!

以防万一您也来这里寻找答案!


0
投票

有3个错误:

  • 更正脚本标签的
    type
  • 代码末尾有一个额外的
    }
  • 不要使用
    onload()
    作为
    body
    标签,您应该更好地使用
    window.onload
    ,如下所示,以确保您的
    start()
    函数在文档准备好后运行:
    ...
    <head>   
    <title>Monster Invasion</title>
        <script type="text/javascript">
            window.onload = function(){

                // Put all your code here
                // And at the end run start() function
                start();
            }
        </script>
    </head>
    <body>
    ...

0
投票

<!DOCTYPE html>
<html>
  <head>
    <title>Monster Invasion</title>
    <script type="javascript">
      var hur;
      var monsters = 10;
      var objective = false;
      var health = 100;
      var damage = 30;
      var sheild = false;
      var ea = 1;
      function start() {
        setTimeout(hurt,4000)
      }
      function hurt() {
        var newhelth = health - damage;
        
        health = newhelth;
        document.getElementById("healtw").innerHTML = health;
        start();
      }
      
      function kill() {
        if(monsters > 0) {
        monsters--;
        document.getElementById("monster1").src="dead.jpg"
        
        setTimeout(next,2000)
        }else {
          objective = true;
          document.location="endoflevel.html";
        }
      
      }
      function next() {
        document.getElementById("monster1").src="monster.jpg"
        
      }
      }
    </script>
  </head>
  <body onload="start()">
    <p id="healtw"></p>
    <embed src="guide_first_level.mp3" type="audio/mp3" hidden="true" autostart="true">
    <a id="st" onclick="kill()"><img id="monster1" src="monster.jpg"></a>
    <p id="ada"></p>
    <a href="sheild.html">Activate sheild</a>
  </body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.