如何使用Javascript单选按钮读取输入,然后打印到HTML?

如何使用Javascript单选按钮读取输入,然后打印到HTML?,javascript,html,forms,Javascript,Html,Forms,我尝试做的基本点是创建一个带有单选按钮的表单,每个单选按钮都有自己的值,然后让一些Javascript根据所选内容在网页上打印一些内容 示例:用户选择1-您选择的1显示在表单下- 用户选择2-您选择的2显示在表单下 当我去测试我的代码时出现的问题是,当我点击提交按钮时,不会打印任何内容。我无法判断它是否因为没有调用函数而没有打印任何内容,或者是因为调用特定HTML标记所涉及的语法不确定,或者完全是因为其他原因。我不想学习如何使用任何javascript库,只是仍在尝试学习如何使用原始javasc

我尝试做的基本点是创建一个带有单选按钮的表单,每个单选按钮都有自己的值,然后让一些Javascript根据所选内容在网页上打印一些内容

示例:用户选择1-您选择的1显示在表单下- 用户选择2-您选择的2显示在表单下

当我去测试我的代码时出现的问题是,当我点击提交按钮时,不会打印任何内容。我无法判断它是否因为没有调用函数而没有打印任何内容,或者是因为调用特定HTML标记所涉及的语法不确定,或者完全是因为其他原因。我不想学习如何使用任何javascript库,只是仍在尝试学习如何使用原始javascript,到目前为止,教程资源几乎没有任何用处,除了form.preventDefault和document.querySelectorinput[name=radInput]:checked.value

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width,scale=1">
    <script language="javascript, text">
      var salt = 
      document.querySelector("input[name=radInput]:checked").value;
      var form = document.querySelector("form");
      var sand = document.querySelector("pre");
      form.addEventListener("submit", function(event) {
       var data = new FormData(form);
       var output = "";
       for (const entry of data) {
        output = entry[0] + "=" + entry[1] + "\r"};
        sand.innerText = output;
        event.preventDefault();
      }, false);
     </script>
  </head>
  <body>
   <form>
    <div>
     <input type="radio" id="input1" name="radInput" value="1">
     <label for="input1">ONE</label>
     <input type="radio" id="input2" name="radInput" value="2">
     <label for="input2">TWO</label>
     <input type="radio" id="input3" name="radInput" value="3">
     <label for="input3">THREE</label>
    </div>
    <div>
     <button type="submit">Test</button>
    </div>
   </form>
   <div>
    <pre></pre>
   </div>
  </body>
</html> 

我快速检查了你的脚本-我删除了var salt行,因为sand从未被引用

因此,我认为脚本在表单呈现之前运行,因此form.addEventListener永远不会正确运行,因为表单没有定义

您可以自己查看-加载页面,打开WebDeveloper控制台,转到控制台,然后键入

 var form = document.querySelector("form");
  var sand = document.querySelector("pre");
form.addEventListener("submit", function(event) {
console.log("clicked");
       var data = new FormData(form);
       var output = "";
       for (const entry of data) {
        output = entry[0] + "=" + entry[1] + "\r"};
        sand.innerText = output;
        event.preventDefault();
      }, false);
它没有定义

接下来,只需将JS粘贴到:

Uncaught ReferenceError: fussyChild is not defined
at onload
我添加了一个调试


现在,由于HTML已经存在,表单var需要绑定到一些东西。您需要确保在JS运行之前呈现HTML。我想更多关于你的信息可以在这里找到:

我对你的脚本做了快速检查-我删除了var salt行,因为sand从未被引用过

因此,我认为脚本在表单呈现之前运行,因此form.addEventListener永远不会正确运行,因为表单没有定义

您可以自己查看-加载页面,打开WebDeveloper控制台,转到控制台,然后键入

 var form = document.querySelector("form");
  var sand = document.querySelector("pre");
form.addEventListener("submit", function(event) {
console.log("clicked");
       var data = new FormData(form);
       var output = "";
       for (const entry of data) {
        output = entry[0] + "=" + entry[1] + "\r"};
        sand.innerText = output;
        event.preventDefault();
      }, false);
它没有定义

接下来,只需将JS粘贴到:

Uncaught ReferenceError: fussyChild is not defined
at onload
我添加了一个调试


现在,由于HTML已经存在,表单var需要绑定到一些东西。您需要确保在JS运行之前呈现HTML。我想您可以在这里找到更多信息:

看起来您正在尝试在呈现/选择所选项目之前获取该项目的值。将其放入eventhandler代码中,它应该可以工作

别忘了,你还需要验证是否检查了某些内容。。。如果您提交表单时未选中任何内容,则无法优雅地处理它

var form=document.querySelectorform; var sand=document.querySelectorpre; var salt=form.addEventListenersubmit,functionevent{ document.querySelectorinput[name=radInput]:checked.value; var数据=新的FormDataform; var输出=; 用于常量输入数据{ 输出=条目[0]+=+条目[1]+\r }; sand.innerText=输出; 违约事件; },假; 一 二 三 测验
看起来您正在尝试在呈现/选择选定项之前获取该项的值。将其放入eventhandler代码中,它应该可以工作

别忘了,你还需要验证是否检查了某些内容。。。如果您提交表单时未选中任何内容,则无法优雅地处理它

var form=document.querySelectorform; var sand=document.querySelectorpre; var salt=form.addEventListenersubmit,functionevent{ document.querySelectorinput[name=radInput]:checked.value; var数据=新的FormDataform; var输出=; 用于常量输入数据{ 输出=条目[0]+=+条目[1]+\r }; sand.innerText=输出; 违约事件; },假; 一 二 三 测验
@因此,我按照您提供的链接中的建议,将我所有的javascript粘贴到一个函数中,该函数将由body中的onload属性调用,但它仍然拒绝工作。当我进入开发工具时,它说

以下是我所做的更改:


@因此,我按照您提供的链接中的建议,将我所有的javascript粘贴到一个函数中,该函数将由body中的onload属性调用,但它仍然拒绝工作。当我进入开发工具时,它说

以下是我所做的更改:


替换:替换为:看看这是否有效,为我做的。欢迎光临,乐意帮忙!顺便说一句,我不知道为什么这样做是正确的,我想它会被忽略,因为它不合适,这里没有提及它:但我肯定有人知道为什么这会扼杀脚本。如果你感兴趣,请在另一篇帖子中提问:替换:改为:看看这是否有效,对我来说是这样的。欢迎你,乐于帮助!顺便说一句,我不知道为什么这是正确的方法,我想它会被忽略,因为它不合适,没有引用 ce:但我相信有人知道为什么这会扼杀剧本,如果你感兴趣,请在另一篇帖子中提问: