【问题标题】:Calculate total checkboxes from innerHTML [duplicate]从innerHTML计算总复选框[重复]
【发布时间】:2021-01-21 01:03:53
【问题描述】:

HTML

<select style="margin-left: 10px;" id="myDropDown">
        <option value='' disabled selected>Assign Table</option>
        <option value='1'>Table1</option>
        <option value='2'>Table2</option>
        <option value='3'>Table3</option>
    </select>
<div id="myTable">
          
        </div>
        <input type="text" id="total" value="0" readonly="readonly" />

Javascript

$('#myDropDown').change(function() {
        //Selected table
        var inputValue = $(this).val();
        var HTML;
        var HTML2;
        if (inputValue == 1) {
        HTML = '<div><input id="test-element" type="checkbox" price="1">price 1</div><br><div><input id="test-element" type="checkbox" price="2">price 2 </div>';
       }
       else if(inputValue == 2) {
       HTML = '<div><input id="test-element" type="checkbox" price="3">price 3 </div><br><div><input id="test-element" type="checkbox" price="4">price 4 </div>';
      }
      document.getElementById('myTable').innerHTML = HTML;
   });
    
    function calcAndShowTotal(){
    var total = 0;
    $('#myTable :checkbox[checked]').each(function(){
        total += parseFloat($(this).attr('price')) || 0;
        alert("working");
    });
    $('#total').val(total);   
}

$(document).on("click",'#myTable :checkbox',function() {
      //alert("working");
    calcAndShowTotal();
});

calcAndShowTotal();

我做了一个下拉菜单,用 .innerHTML 在不同的复选框之间切换。我将点击功能更新为 $(document).on ,它适用于每次点击,但总值不会改变。为什么 calcAndShowTotal 函数不起作用?我也尝试将其更改为 $(document).on 但它不计算总数。例如检查小提琴链接。 http://jsfiddle.net/7yf8sdpw/95/

【问题讨论】:

  • 你能添加一个代码sn-p吗?如果你不知道怎么做,去这里:stackoverflow.blog/2014/09/16/…
  • 它不起作用,因为您在绑定事件后正在(重新)创建 HTML。 $("selector").click(... 仅适用于运行时存在的元素。您需要更改为事件委托$(document).on("click", "#myTable :checkbox", function() ...
  • @freedomn-m 感谢您的意见。我注意到它不适用于 $(document).on("click", "#myTable :checkbox" 而是通过在复选框中添加一个 id 并将其更改为: $(document).on("click ","#test-element"。但是现在总值函数不起作用了。

标签: javascript html jquery logic


【解决方案1】:

id为myTable的div没有checkbox类型的子input元素,不像id为price list的div。

您究竟希望这部分代码做什么?所以我可以提供更好的帮助...

【讨论】:

  • 在单击其中一个选择选项后会执行此操作。但是由于我假设的事件委托,它不起作用。我仍然不确定如何更改代码。
  • 我想要我更改的这部分代码来计算我单击的复选框的总值。
  • 好的。看起来您需要在 calcAndShowTotal() 函数中监视对 #myTable 的更改。您将能够让警报以这种方式工作。对不起,发送链接而不是代码。评论部分的代码一点都不漂亮,所以这里是代码笔上代码的链接:codepen.io/ifycode/pen/OJRGZox 虽然我还没有完成,但这个解决方案将有助于开始可视化问题所在。
  • 感谢您的回复。由于重要的部分是通过单击复选框来获得不同“价格”的总值,因此第一个表选项价格 1 + 价格 2 的总值应该 = 3,依此类推。通过控制台,我只能看到一个输入类型复选框被记录。此外,我相信通过 $(document).on 应该始终更新 html。我只使用 html 而不是 .innerHTML 尝试了这段代码,它仍然有效,所以我仍然很困扰,我知道如何让工作保持警惕,但我仍然被总价值问题困扰,我应该发一个新帖子吗?
  • 哦,好的。对不起,我之前没有理解你的问题。我认为这个问题暗示您根本无法让#myTable 做出回应以及原因。我也没有看到您在 HTML 变量中有两个输入字段。发一个新帖子可能是个好主意。请确保这一次,您向 5 岁的读者解释您想要实现的目标。如果您最终决定发布新帖子,我会留意您发布的新帖子。
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多