javascript 嵌套if状态的单选按钮计算器

sqserrrh  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(128)

我正在尝试创建一个定价计算器,该计算器将所有选中的单选按钮放入一个数组中,并在最后将其添加到数组中。但是,我希望其中一个单选按钮将第一个单选按钮的属性与其自身的值相乘。
我试过将一个if语句嵌套在另一个if语句中,但它似乎只是添加了第一个if语句的值,而忽略了第二个。

$(".w-radio").change(function() {
  var totalPrice = 0,
    values = [];

  $("input[type=radio]").each(function() {
    if ($(this).is(":checked")) {
      if ($(this).is('[name="catering"]')) {
        var cateringFunc = (
          $(this).val() * $('[name="gastronomy"]').attr("add-value")
        ).toString();
        values.push($(this).val());
      }
      values.push($(this).val());
      totalPrice += parseInt($(this).val());
    }
  });

  $("#priceTotal span").text(totalPrice);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="hack43-radio-group w-radio">

  <input type="radio" name="gastronomy" value="0" add-value="10">0<BR>
  <input type="radio" name="gastronomy" value="550" add-value="10">550<BR>
  <input type="radio" name="gastronomy" value="550" add-value="10">550<BR>
  <input type="radio" name="gastronomy" value="550" add-value="10">550<BR>
</label>
<br>
<label class="hack43-radio-group w-radio">
  <input type="radio" name="venue" value="0">0<BR>
  <input type="radio" name="venue" value="10500">10500<BR>
  <input type="radio" name="venue" value="10500">10500<BR>
  <input type="radio" name="venue" value="10500">10500<BR>
</label>
<br>
<label class="hack43-radio-group w-radio">
  <input type="radio" name="catering" value="0">0<BR>
  <input type="radio" name="catering" value="40">40<BR>
  <input type="radio" name="catering" value="45">45<BR>
  <input type="radio" name="catering" value="60">60<BR>
</label>

<div class="hack42-45-added-value-row">

  <div id="priceTotal">
    <span>0</span>
  </div>
</div>
s8vozzvw

s8vozzvw1#

当条件为真时,在推入values数组并向totalPrice添加时,应使用cateringFunc而不是$(this).val()
我假设您只想从选中的单选按钮中获得增加的值,所以我将:checked添加到选择器中,如果没有选中任何gastronomy按钮,那么您还需要提供一个默认值。
不应该创建add-value这样的新属性,如果需要自定义属性,可以使用data-XXX,这些属性可以通过jQuery .data()方法访问。

$(".w-radio").change(function() {
  var totalPrice = 0,
    values = [];

  $("input[type=radio]:checked").each(function() {
    if ($(this).is('[name="catering"]')) {
      var cateringFunc = (
        $(this).val() * ($('[name="gastronomy"]:checked').data("add-value") || 0)
      );
      values.push(cateringFunc.toString());
      totalPrice += cateringFunc;
    }
    values.push($(this).val());
    totalPrice += parseInt($(this).val());
  });

  $("#priceTotal span").text(totalPrice);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="hack43-radio-group w-radio">
  <input type="radio" name="gastronomy" value="0" data-add-value="10">0<BR>
  <input type="radio" name="gastronomy" value="550" data-add-value="10">550<BR>
  <input type="radio" name="gastronomy" value="550" data-add-value="10">550<BR>
  <input type="radio" name="gastronomy" value="550" data-add-value="10">550<BR>
</label>
<br>
<label class="hack43-radio-group w-radio">
  <input type="radio" name="venue" value="0">0<BR>
  <input type="radio" name="venue" value="10500">10500<BR>
  <input type="radio" name="venue" value="10500">10500<BR>
  <input type="radio" name="venue" value="10500">10500<BR>
</label>
<br>
<label class="hack43-radio-group w-radio">
  <input type="radio" name="catering" value="0">0<BR>
  <input type="radio" name="catering" value="40">40<BR>
  <input type="radio" name="catering" value="45">45<BR>
  <input type="radio" name="catering" value="60">60<BR>
</label>

<div class="hack42-45-added-value-row">

  <div id="priceTotal">
    <span>0</span>
  </div>
</div>

相关问题