开发者问题收集

HTML 表单 onSubmit 事件与 JS ReferenceError

2017-12-01
432

我正在尝试测试并实现我已放置在 HTML 页面中的表单的 onSubmit 事件。单击提交按钮时,应弹出一个警报,如相应的 JavaScript 函数中定义的那样。但是,单击后什么也没有发生,我的浏览器的 Web 控制台显示“ ReferenceError :onSubmitQA 未定义”作为输出。

以下是 HTML 代码:

<!DOCTYPE html>
<html>
<head>
    <title>Quiz Game</title>
    <link href="http://fonts.googleapis.com/css?family=Corben:bold" rel="stylesheet" type="text/css">
    <link href="http://fonts.googleapis.com/css?family=Nobile" rel="stylesheet" type="text/css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="../css/subpage_styles.css">
    <script src="../js/script_quiz.js"></script>
</head>
<body>
    <div class = "text">
    <a id="logo" href="../index.html"><img src = "../images/web_logo.png"></a>
    <h1>(Quiz Header)</h1>

    <h3>Question 1:</h3>
    <iframe width="560" height="315" src="https://www.youtube.com/embed/vabnZ9-ex7o" frameborder="0" allowfullscreen></iframe>
    <h4>Is the song in the video above:</h4>
    <form onsubmit="onSubmitQA(event.target)">
        <input type="radio" id="radio1_1" name="alternative" value = "pop">Pop<br>
        <input type="radio" id="radio1_2" name="alternative" value = "altenative">Rock<br>
        <input type="radio" id="radio1_3" name="alternative" value = "alternative">Alternative<br>
        <input type="radio" id="radio1_4" name="alternative" value = "hiphop">Hip Hop<br>
        <br>
        <input type="submit" id="submit1" value="Submit">
    </form>
    </div>
</body>

链接的 JS 文件的内容:

function onSubmitQA(e) {
    alert("Submitted");
}

我认为问题可能是 JS 文件路径中的拼写错误,但即使 JS 文件与 HTML 文件放在同一目录中,错误仍然会发生。如果能提供一些帮助,我们将不胜感激。谢谢。

2个回答

您需要将函数添加到窗口对象,如下所示:

<script>
    window.onSubmitQA = onSubmitQA
</script>

但您可能应该做的是:

<form id="myForm" ...

<script>
    document.getElementById("myForm").addEventListener("submit", onSubmitQA)
</script>
Robbie Milejczak
2017-12-01

似乎您的 index.html 文件无法简单地找到您的脚本。您能提供您的文件夹结构吗?因为如果您像这样设置 - “../” - 这意味着您的 index.html 放在文件夹中,所以结构应该是这样的 ->

  • js/script_quiz.js
  • css/subpage_styles.css
  • images/
  • public/index.html

所以只需检查从 html 到您的脚本文件的路径即可。

Jānis Konutis
2017-12-01