带有嵌套 if Stateme 的单选按钮计算器

Radio button calculator with nested if Stateme

提问人:Jeff 提问时间:1/27/2023 最后编辑:BarmarJeff 更新时间:1/27/2023 访问量:44

问:

我正在尝试创建一个定价计算器,该计算器将所有选中的单选按钮推入一个数组中,最后将其添加在数组中。但是,我希望其中一个单选按钮采用第一个单选按钮的属性并将其乘以自己的值。

我尝试将一个 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>

JavaScript jQuery IF-语句

评论

0赞 Barmar 1/27/2023
您可以使用选择器而不是语句来测试它是否被选中。input[type=radio]:checkedif
0赞 Barmar 1/27/2023
你正在设置,但从不对它做任何事情。cateringFunc
0赞 Barmar 1/27/2023
$('[name="gastronomy"]').val()是第一个美食按钮的值。你想要那个被检查的吗?
0赞 Barmar 1/27/2023
数组有什么用?你推它,但永远不要使用结果。values

答:

0赞 Barmar 1/27/2023 #1

当条件为 true 时,应使用,而不是在推入数组并添加 时使用 。cateringFunc$(this).val()valuestotalPrice

我假设您只想从选定的单选按钮中获取附加值,因此我添加到了选择器中。然后,如果未选中任何按钮,则还需要提供默认值。:checkedgastronomy

您不应该编造像 这样的新属性。如果需要自定义属性,请使用 。可以使用 jQuery 方法访问这些内容。add-valuedata-XXX.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>