Javascript 为什么表单值不显示?

Javascript 为什么表单值不显示?,javascript,html,forms,Javascript,Html,Forms,我正在创建一个简单的表单,我想在表单提交并成功验证后将输入值写入控制台。然而,当我去测试我当前的进度时,我输入了一段随机的文本,但没有显示任何内容,即使在控制台中也是如此。以下是我现在使用的代码,不包括任何注释掉的代码: window.onload=函数{//,因此可以定义DOM 函数validateForm{ var form=document.forms['encrypt']['text']; 不规则=={ 输入一段要加密的文本; 返回false; }否则{ console.logform

我正在创建一个简单的表单,我想在表单提交并成功验证后将输入值写入控制台。然而,当我去测试我当前的进度时,我输入了一段随机的文本,但没有显示任何内容,即使在控制台中也是如此。以下是我现在使用的代码,不包括任何注释掉的代码:

window.onload=函数{//,因此可以定义DOM 函数validateForm{ var form=document.forms['encrypt']['text']; 不规则=={ 输入一段要加密的文本; 返回false; }否则{ console.logform.value; } } } 正文:
validateForm函数仅在onload函数中可见。此外,您将表单与空字符串进行比较,而不是将表单中文本字段中的值进行比较。console.log也不可见,因为页面会在您看到它之前刷新

下面是修复了这三件事的代码

<html>
  <head>
    <meta charset="utf-8" />
    <script>
      function validateForm() {
        var text = document.forms['encrypt']['text'].value;
        if(text == "") {
          alert("Enter piece of text to encrypt");
          return false;
        } else {
          alert("Entered '" + text + "', refreshing now.");
          return true;
        }
      }
    </script>
  </head>
  <body>
    <form name="encrypt" action="#" onsubmit="return validateForm()">
      Text: <input type="text" name="text">
      <input type="submit" name="Submit and Encrypt!">
    </form>
  </body>
</html>

validateForm函数仅在onload函数中可见。此外,您将表单与空字符串进行比较,而不是将表单中文本字段中的值进行比较。console.log也不可见,因为页面会在您看到它之前刷新

下面是修复了这三件事的代码

<html>
  <head>
    <meta charset="utf-8" />
    <script>
      function validateForm() {
        var text = document.forms['encrypt']['text'].value;
        if(text == "") {
          alert("Enter piece of text to encrypt");
          return false;
        } else {
          alert("Entered '" + text + "', refreshing now.");
          return true;
        }
      }
    </script>
  </head>
  <body>
    <form name="encrypt" action="#" onsubmit="return validateForm()">
      Text: <input type="text" name="text">
      <input type="submit" name="Submit and Encrypt!">
    </form>
  </body>
</html>

没有理由将此函数包装在onload事件处理程序中。这样做限制了函数定义的范围,使得试图调用它的代码实际上看不到它。也就是说,onload完成后,您定义的函数不再在作用域中,不再存在

只需删除处理程序并直接定义函数:

<script language="Javascript">
    function validateForm() {
      var form = document.forms['encrypt']['text'];
      if(form == "") {
        alert("Enter piece of text to encrypt");
        return false;
      } else {
        console.log(form.value);
      }
    }
</script>

没有理由将此函数包装在onload事件处理程序中。这样做限制了函数定义的范围,使得试图调用它的代码实际上看不到它。也就是说,onload完成后,您定义的函数不再在作用域中,不再存在

只需删除处理程序并直接定义函数:

<script language="Javascript">
    function validateForm() {
      var form = document.forms['encrypt']['text'];
      if(form == "") {
        alert("Enter piece of text to encrypt");
        return false;
      } else {
        console.log(form.value);
      }
    }
</script>

请尝试删除window.onload=function{并保留validateForm函数。

请尝试删除window.onload=function{并保留validateForm函数。

问题是,当您单击提交时,无法在作用域中访问函数validateForm。您可以通过在控制台中调用此函数来验证这一点。
在您的代码中,它是在window.onload中定义的,因此请将函数移出它。

问题是,当您单击submit时,无法在作用域中访问函数validateForm。您可以通过在控制台中调用此函数来验证这一点。
在您的代码中,它是在window.onload中定义的,因此请将该函数移出它。

这不会将document.forms设置为null吗?对不起,您的意思是哪一行?您删除了window.onload处理程序,在其中,我用document.forms引用了表单。这是validateForm声明中的第一行。我很高兴,高-五:-现在我可以加密提交的文本并显示它!这不是将document.forms设置为null吗?对不起,你的意思是哪一行?你删除了window.onload处理程序,在其中,我用document.forms引用表单。这是validateForm声明中的第一行。我很高兴,high五:-现在我可以加密提交的文本了我想这会将document.forms设置为null。让我试试。@Obinnawakwue:这个函数没有将document.forms设置为任何值,它只是从中读取。我想这会将document.forms设置为null。让我试试。@Obinnawakwue:这个函数没有将document.forms设置为任何值,它只是从中读取。