当我确定我的函数是否已定义时,为什么我在错误控制台上看到“函数未定义”?

时间:2012-01-20 15:43:33

标签: javascript

我正在使用的代码应该根据单选按钮选择更改表单的“action”属性。它现在不起作用,我正在努力找出原因。根据我的Firefox错误控制台,函数'submitForm'没有定义 - 但我确定它已定义!!

有人可以帮忙吗?

代码如下:

头部内部(q1指的是单选按钮的名称属性):

<script type="text/javascript" src="scripts/javascript.js">
function submitForm() {
 if (document.forms[0].q1[1].checked == true) {
  document.forms[0].action = "q2.html";
  }
 else if (document.forms[0].q1[0].checked == true) {
  document.forms[0].action = "q3.html";
  }
 else {
  alert ('Please choose an option');
 }
}
</script>

事件处理程序:

 <form method="post" id="question1" onsubmit="return submitForm();">

3 个答案:

答案 0 :(得分:5)

您不能拥有带有src和脚本内容的cript标记。您的浏览器正在加载脚本文件,并忽略其中的内容,因此您的函数未定义。这就是你想要的:

<script type="text/javascript" src="scripts/javascript.js"></script>
<script type="text/javascript">
    function submitForm() {
     if (document.forms[0].q1[1].checked == true) {
      document.forms[0].action = "q2.html";
      }
     else if (document.forms[0].q1[0].checked == true) {
      document.forms[0].action = "q3.html";
      }
     else {
      alert ('Please choose an option');
     }
    }
</script>

答案 1 :(得分:2)

也许这就是你想要的:

<script type="text/javascript" src="scripts/javascript.js"></script>
<script type="text/javascript">
function submitForm() {
 if (document.forms[0].q1[1].checked == true) {
  document.forms[0].action = "q2.html";
  }
 else if (document.forms[0].q1[0].checked == true) {
  document.forms[0].action = "q3.html";
  }
 else {
  alert ('Please choose an option');
 }
}
</script>

通常,您不能拥有带有 src 的脚本标记和标记内的内容。大多数浏览器都会看到 src 并忽略标签内部的内容,或者抛出错误。见What does a script-Tag with src AND content mean?

答案 2 :(得分:1)

你实际上是在脚本标签中编写代码,还是从firefox中删除了?

因为您无法在具有src属性的脚本标记内编写JavaScript。这应该是它的样子:

<script type="text/javascript" src="scripts/javascript.js"></script>
<script type="text/javascript">
function submitForm() {
 if (document.forms[0].q1[1].checked == true) {
  document.forms[0].action = "q2.html";
  }
 else if (document.forms[0].q1[0].checked == true) {
  document.forms[0].action = "q3.html";
  }
 else {
  alert ('Please choose an option');
 }
}
</script>