【问题标题】:Issues running a function off a checkbox onclick关闭复选框 onclick 运行功能的问题
【发布时间】:2017-09-18 23:42:45
【问题描述】:

我正试图弄清楚如何制作一个 onclick 复选框功能,所以我想我会做一个小例子。当然,我看不出我做错了什么。任何帮助将不胜感激。

<!DOCTYPE html>
<html>

<title>Pizza Test</title>
  <script>
      function validatePizza(){
        if(document.getElementById('pepperoni' && 'sausage' && 
        'olives').checked = false)
          message.innerText = "What a terrible pizza";
      } else {
        message.innerText = "Exactly right";
      }
</script>

<h1>Which Pizza Ingredients are the best?</h1>

<h2>Pick which ingredients you like on your pizza</h2>
 <div id="ingredient_box">
  <input  type="checkbox"  id="pepperoni" value="pepperoni" 
  onclick="validatePizza();"/>
  <label for="pepperoni">Pepperoni</label>

  <input  type="checkbox"  id="sausage" value="sausage"/>
  <label for="sausage">Sasuage</label>

  <input  type="checkbox"  id="olives" value="olives"/>
  <label for="olives">olives</label>

  <input  type="checkbox"  id="mushrooms" value="mushrooms"/>
  <label for="mushrooms">mushrooms</label>

  <input  type="checkbox"  id="pineapple" value="pineapple"/>
  <label for="pineapple">pineapple</label>

  <input  type="checkbox"  id="greenPeppers" value="greenPeppers"/>
  <label for="greenPeppers">greenPeppers</label>

【问题讨论】:

  • 1) 'pepperoni' &amp;&amp; 'sausage' &amp;&amp; 'olives' 计算结果为 'olives'。如果要检查多个元素,则必须多次调用getElementByID。 2)= 用于分配,而不是比较。 3)除非你真的必须这样做,否则不要与布尔值进行比较。 |请解释您的代码有什么问题。 “我看不出我做错了什么”不是问题描述。
  • 我会推荐你​​使用 jquery 并阅读这个问题stackoverflow.com/questions/14192522/…
  • @Daniel:链接的问题与 OP 正在做什么有什么关系?
  • 4) 您的代码有语法错误。 ... 我推荐阅读 eloquentjavascript.net 以了解 JavaScript 基础知识。
  • 此外,在标记中看不到“消息”,因此如果不获取该元素,您将无法在其中设置文本。也请更正!

标签: javascript dom checkbox


【解决方案1】:

当你想比较两个对象时,不要使用=,而是使用=====。但是当你想比较两个布尔值时,你不需要等号。而不是if(a==false) 轻松写if(!a)

所以把你的代码改成这样:

<script>
  function validatePizza(){
       if(!document.getElementById('pepperoni').checked && 
          !document.getElementById('sausage').checked && 
          !document.getElementById('olives').checked){
             message.innerText = "What a terrible pizza";
     } else {
             message.innerText = "Exactly right";
     }
  }
</script>

【讨论】:

  • 如果您解释 OP 所犯的错误以及您的更改如何解决他们的问题,您的回答将更加有用。 (您的代码中仍然存在语法错误,您缺少}{
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多