【问题标题】:Loop multiple check boxes in javascript addition在javascript添加中循环多个复选框
【发布时间】:2021-11-26 06:06:11
【问题描述】:

我有一个简单的复选框计算器,它几乎可以添加检查的项目。我怎样才能分开总价格。我的问题是选择食物时它没有显示在正确的位置。

有没有办法根据勾选的项目在正确的位置显示价格。例如,来自技术的项目应显示在该字段集的 totalPrice 中,从食品检查的项目应显示在该字段集的 totalPrice 中.我努力使代码尽可能直观,任何帮助或提示将不胜感激。

function priceAddition() {
  var input = document.getElementsByName("option");
  var total = 0;
  for (var i = 0; i < input.length; i++) {
    if (input[i].checked) {
      total += parseFloat(input[i].value);
    }
  }
  document.getElementById("totalPrice").innerHTML = "$" + total.toFixed(2);
}
<form method="post" oninput="priceAddition();">
          <div class="grid-container">
            <fieldset id="fieldset">
              <legend>Prices</legend>
              <div class="items-container">
                <h3>Technology</h3>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="2500"> 4K Television $2500
                  </label>
                </div>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="250"> Speakers $250
                  </label>
                </div>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="500"> Laptop $500
                  </label>
                </div>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="500"> Gaming Console $500
                  </label>
                </div>    
              <div class="items-container">
              <div class="price">
                <br>
                <h3>Total estimated price for technology: </h3>
                <p id="totalPrice">$0.00</p>
              </div>
            </fieldset>
          </div>
        </form>
        
        <form method="post" oninput="priceAddition();">
          <div class="grid-container">
            <fieldset id="fieldset">
              <legend>Prices</legend>
              <div class="items-container">
                <h3>Food</h3>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="12.99"> 1kg of Chicken $12.99
                  </label>
                </div>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="5"> Grapes $5
                  </label>
                </div>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="22"> Salmon Fish $22
                  </label>
                </div>
                <div class="item-option">
                  <label class="label">
                    <input type="checkbox" name="option" value="30"> 12 Donuts $30
                  </label>
                </div>    
              <div class="items-container">
              <div class="price">
                <br>
                <h3>Total estimated price for food: </h3>
                <p id="totalPrice">$0.00</p>
              </div>
            </fieldset>
          </div>
        </form>

【问题讨论】:

    标签: javascript loops


    【解决方案1】:

    好的,首先您已经使用了 id 两次,这会导致一些问题,而且您需要为这两种形式使用单独的函数。这是新代码:

    function priceAddition() {
      var input = document.getElementsByName("option");
      var total = 0;
      for (var i = 0; i < input.length; i++) {
        if (input[i].checked) {
          total += parseFloat(input[i].value);
        }
      }
      document.getElementById("totalPrice").innerHTML = "$" + total.toFixed(2);
    }
    
    
    function priceAddition2() {
      var input = document.getElementsByName("option2");
      var total = 0;
      for (var i = 0; i < input.length; i++) {
        if (input[i].checked) {
          total += parseFloat(input[i].value);
        }
      }
      document.getElementById("totalPrice2").innerHTML = "$" + total.toFixed(2);
    }
    <form method="post" oninput="priceAddition();">
              <div class="grid-container">
                <fieldset id="fieldset">
                  <legend>Prices</legend>
                  <div class="items-container">
                    <h3>Technology</h3>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option" value="2500"> 4K Television $2500
                      </label>
                    </div>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option" value="250"> Speakers $250
                      </label>
                    </div>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option" value="500"> Laptop $500
                      </label>
                    </div>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option" value="500"> Gaming Console $500
                      </label>
                    </div>    
                  <div class="items-container">
                  <div class="price">
                    <br>
                    <h3>Total estimated price for technology: </h3>
                    <p id="totalPrice">$0.00</p>
                  </div>
                </fieldset>
              </div>
            </form>
            
            <form method="post" oninput="priceAddition2();">
              <div class="grid-container">
                <fieldset id="fieldset">
                  <legend>Prices</legend>
                  <div class="items-container">
                    <h3>Food</h3>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option2" value="12.99"> 1kg of Chicken $12.99
                      </label>
                    </div>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option2" value="5"> Grapes $5
                      </label>
                    </div>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option2" value="22"> Salmon Fish $22
                      </label>
                    </div>
                    <div class="item-option">
                      <label class="label">
                        <input type="checkbox" name="option2" value="30"> 12 Donuts $30
                      </label>
                    </div>    
                  <div class="items-container">
                  <div class="price">
                    <br>
                    <h3>Total estimated price for food: </h3>
                    <p id="totalPrice2">$0.00</p>
                  </div>
                </fieldset>
              </div>
            </form>

    【讨论】:

    • 如果你喜欢它,请点赞,让它成为这个问题的答案
    • 基本上,我已经制作了两个函数,每个表单一个,当你为这两个表单使用 1 个函数时,它会变得混乱并且无法正常工作。你也不能有两个具有相同 id 的段落
    猜你喜欢
    • 2017-05-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多