JS 输出消息打印在表单中的 div 标签上

Posted

技术标签:

【中文标题】JS 输出消息打印在表单中的 div 标签上【英文标题】:JS output message printed on a div tag in a form 【发布时间】:2018-10-18 14:17:26 【问题描述】:

我想,我正在为一些非常简单的事情而苦苦挣扎。 我有一个表单,当用户选择他们的答案时,我想在 DIV 标记内出现一条消息。

我的代码示例在这里:

    function check()
 		//var display_answer = document.myform.answer.value;
    
    var q1 = document.myform.q1.value;
    var q2 = document.myform.q2.value;
    
    if(q1 == "a" && q2 == "a")
  	document.getElementById("div").innerhtml= "Green!";
    
    if(q1 == "a" && q2 == "b")
    		document.getElementById("div").innerHTML = "Red!";
    
    if(q1 == "b" && q2 == "a")
    		document.getElementById("div").innerHTML = "Yellow!";
    
    if(q1 == "b" && q2 == "b")
    document.getElementById("div").innerHTML = "Blue!";
    
    <!DOCTYPE html>
    <html>
    <head>
    <title>Food Quiz</title>
    </head>
    <body>
    <form name="myform">
    Question 1: Question...?
    <input type="radio" name="q1" value="a"> Answer A </br>
    <input type="radio" name="q1" value="b"> Answer B </br></br>
    
    
    Question 2: Question...?
    <input type="radio" name="q2" value="a"> Answer A </br>
    <input type="radio" name="q2" value="b"> Answer B </br></br>
    </br>
    </br>
    </br>
    </br>
    <input type="button" value="submit" onclick="check()">
    </br>
    </br>
    </form>
    
    <p>
    Results:
    </p>
    </br>
    <div style="background-color:lightblue" id="div" name="answer">
    </div>
    
    
    </body>
    </html>

事实是,我没有得到任何结果。当用户选择 2 个给定答案的组合(每个问题一个)时,它会得到颜色结果,打印在 id=div 的 DIV 标签上。

对这里出了什么问题有任何想法吗?谢谢。

【问题讨论】:

console.log() 是你的朋友 当我将您的代码添加到 snipplet 时,对我来说似乎工作正常。该 HTML 中包含的代码在哪里? 您的代码有效(对于问题 2 有效),但您的 HTML 有一些无效语法 &lt;/br&gt; 应该只是 &lt;br&gt;.innerHTML 用于获取/设置包含 HTML 的字符串他们。如果字符串没有,请使用.textContent 我们很难帮助您做出“正确”的行为,因为您的代码会讨论“答案 a”和“答案 b”并以颜色进行响应。我们无法理解您在选择各种按钮组合时应该显示什么的逻辑。 当你说“我没有得到任何结果”时,你是什么意思?在您的 check() 逻辑中,您的条件仅在为两者都选择了值的情况下处理。如果您没有选择其中一组单选按钮,则该值将为空白 - 但您没有检查空白(例如:if (q1 == "")),因此不会发生任何事情。 【参考方案1】:

我稍微更改了您的代码 sn-p 并且这有效。基本上,我在表格中添加了method="post"。我将提交按钮类型更改为type="submit"。这是HTML Forms 的一个很好的资源。为了防止浏览器操作,我更改了提交按钮onclick="check(); return false;" 的onclick 操作。这是一个很好的资源:@​​987654322@

我还将您的 div 消息的 id 更改为 id="resultMessage"。您通常需要一个唯一的 ID。对于 javascript sn-p,我只创建了一个变量来引用 div 元素并在 if 语句中使用该变量。

是的,console.log() 是你最好的朋友!

function check() 
  var q1 = document.myform.q1.value;
  var q2 = document.myform.q2.value;
  
  var divResult = document.getElementById("resultMessage");

  if (q1 == "a" && q2 == "a") 
    divResult.innerHTML = "Green!";
  
  if (q1 == "a" && q2 == "b") 
    divResult.innerHTML = "Red!";
  
  if (q1 == "b" && q2 == "a") 
    divResult.innerHTML = "Yellow!";
  
  if (q1 == "b" && q2 == "b") 
    divResult.innerHTML = "Blue!";
  
<!DOCTYPE html>
<html>

  <head>
    <title>Food Quiz</title>
  </head>

  <body>
    <form name="myform" method="post">
      <label for="q1">Question 1: Question...?</label>
      <input type="radio" name="q1" value="a"> Answer A </br>
      <input type="radio" name="q1" value="b"> Answer B </br>
      </br>


      <label for="q2">Question 2: Question...?</label>
      <input type="radio" name="q2" value="a"> Answer A </br>
      <input type="radio" name="q2" value="b"> Answer B </br>
      </br>
      </br>
      </br>
      </br>
      </br>
      <input type="submit" value="submit" onclick="check(); return false;">
      </br>
      </br>
    </form>

    <p>
      Results:
    </p>
    </br>
    <div style="background-color:lightblue" id="resultMessage" name="answer">
    </div>

  </body>

</html>

【讨论】:

感谢@John Bullington 的有用帮助和他给我的方法表格指南(我完全忘记了)。 console.log() 确实是最有用的工具!我也想感谢 Scott Marcus 的帮助。以及所有指出我错误的人!我成功地运行了这个。由于 Wordpress 在其正文内容上的 JS 脚本有点棘手。我使用上面的 HTML 代码并将 JS 保存到外部文件中并在页面上调用它。你猜怎么着,它就是这样工作的。再次感谢

以上是关于JS 输出消息打印在表单中的 div 标签上的主要内容,如果未能解决你的问题,请参考以下文章

DropzoneJS & Laravel - 输出表单验证错误

输出表单提交成功到页面而不是重定向

怎么在logcat中显示system.com.print中的打印信息

通过js输出的html的div标签,为啥写的click事件无法操作呢?

如何把json数据动态输出到table表单或div中

js怎样输出表格中的序号,并存放在数组中