javascript总结所选元素数据值并在取消选择时扣除

Posted

技术标签:

【中文标题】javascript总结所选元素数据值并在取消选择时扣除【英文标题】:javascript sum up selected element data value and deduct when unselect 【发布时间】:2021-05-01 11:48:08 【问题描述】:

我有 3 个 div,分别是 item1、item2 和 item3。

item1 与<data-price="10">,item1 与<data-price="20">,item1 与<data-price="30">

我要做的是在选择项目时,它会获取项目的<data-price> 并总结,而如果取消选择所选项目,它将删除/扣除<data-price>

但我的代码结果只显示所选项目而不是总结。

这是我的 html 代码:

<div id="container2">
  <div class="row">
    <div class="col-md-3"><div id="item1" class="select_itm" data-item="1" data-price="10">Item 1 [Price = 10]</div></div>
    <div class="col-md-3"><div id="item2" class="select_itm" data-item="2" data-price="20">Item 2 [Price = 20]</div></div>
    <div class="col-md-3"><div id="item3" class="select_itm" data-item="3" data-price="30">Item 3 [Price = 30]</div></div>
  </div>
</div>
<br>
<br>
<div>
  <p>Total Price: <span id="display">0</span></p>
</div>

这是我的 javascript 代码:

$(document).ready(function() 
  var image_selected = new Array();
  $('#container2').on('click', ".select_itm", function () 
    var aa = $(this)
    if (!aa.is('.checked'))
      aa.addClass('checked'); 
      var myprice = this.getAttribute('data-price');
      image_selected.push(myprice);
     else 
      aa.removeClass('checked');
      var myprice=this.getAttribute('data-price');
      var index = image_selected.indexOf(myprice);
      if (index > -1) 
        image_selected.splice(index, 1);
      
    
    var price = 0;
    price += image_selected;
    $('#display').html(price);
  );
);

【问题讨论】:

【参考方案1】:

简单的方法是使用checked 类循环遍历checked 元素

is('.checked') 也可以工作,但 is(':checked') 可与输入复选框/收音机一起使用,并检查您可以使用的课程if($(selector).hasClass('checked')) 在此处选中可以是您需要检查的任何课程李>

$(document).ready(function() 
  $('#container2').on('click', ".select_itm", function () 
    var aa = $(this), price = 0;
    aa.toggleClass('checked');                   // toggle the class checked on click
    $(".select_itm.checked").each(function()    // loop through the checked items
      price += parseInt($(this).data('price'));  // get total price of checked items
    );
    $('#display').html(price);  
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container2">
<div class="row">
    <div class="col-md-3"><div id="item1" class="select_itm" data-item="1" data-price="10">Item 1 [Price = 10]</div></div>
    <div class="col-md-3"><div id="item2" class="select_itm" data-item="2" data-price="20">Item 2 [Price = 20]</div></div>
    <div class="col-md-3"><div id="item3" class="select_itm" data-item="3" data-price="30">Item 3 [Price = 30]</div></div>
</div>
</div>
<br>
<br>
<div>
        <p>Total Price: <span id="display">0</span></p>
</div>

注意:parseInt() 函数解析一个字符串参数并返回一个整数,带有parseInt 1 + 1 = 2 没有它"1" + "1" = "11" .. 所以请记住这一点

【讨论】:

不客气@LennonGoh .. 祝你有美好的一天:-)

以上是关于javascript总结所选元素数据值并在取消选择时扣除的主要内容,如果未能解决你的问题,请参考以下文章

当数据来自数据库时,如何一次只选择一个单选按钮并在javascript中取消选择其他单选按钮?

如何存储所有选定的按钮值并在 UILabel 上显示它们?

如何从 javascript 变量发送表单值并在 php 中作为整数接收? [复制]

Javascript jQuery插件DataTables取消选择元素

在SQL Server中保存一年中所选月份并在WPF中显示的数据结构[关闭]

如何分解数据库中的值并在选择查询中使用它?