使用javascript选中一次计算总计复选框

使用javascript选中一次计算总计复选框,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,我正在尝试为我的网站创建一个javascript代码,以便在选中复选框后进行计算。每次我选中一个复选框,它都应该计算项目的总价格 这是我的html代码: <form id="orderForm" action="#" method="get"> <section id="selectBook"> <h2>Select books</h2> <?php include_once('data

我正在尝试为我的网站创建一个javascript代码,以便在选中复选框后进行计算。每次我选中一个复选框,它都应该计算项目的总价格

这是我的html代码:

<form id="orderForm" action="#" method="get">
    <section id="selectBook">
        <h2>Select books</h2>
        <?php
        include_once('database_conn.php');
        $sqlBooks = 'SELECT bookISBN, bookTitle, bookYear, catDesc,  bookPrice FROM nbc_book b inner join nbc_category c on b.catID = c.catID WHERE 1 order by bookTitle';
        $rsBooks = mysqli_query($conn, $sqlBooks);
        while ($book = mysqli_fetch_assoc($rsBooks)) {
            echo "\t<div class='item'>
                    <span class='bookTitle'>{$book['bookTitle']}</span>
                    <span class='bookYear'>{$book['bookYear']}</span>
                    <span class='catDesc'>{$book['catDesc']}</span>
                    <span class='bookPrice'>{$book['bookPrice']}</span>
                    <span class='chosen'><input type='checkbox' name='book[]' value='{$book['bookISBN']}' title='{$book['bookPrice']}' /></span>
                </div>\n";
        }
        ?>
    </section>

    <section id="collection">
        <h2>Collection method</h2>
        <p>Please select whether you want your chosen book(s) to be delivered to your home address (a charge applies for this) or whether you want to collect them yourself.</p>
        <p>
        Home address - &pound;3.99 <input type="radio" name="deliveryType" value="home" title="3.99" checked = "checked" />&nbsp; | &nbsp;
        Collect from warehouse - no charge <input type="radio"  name="deliveryType" value="trade" title="0" />
        </p>
    </section>

    <section id="checkCost">
        <h2>Total cost</h2>
        Total <input type="text" name="total" id="total" size="10" readonly="readonly" />
    </section>

选书
  • getTotal()
    中,在此处设置值之前返回:

    返回总数
    document.getElementById(“total”).innerHTML=total

  • 使用值而不是
    innerhtml
    设置输入

    document.getElementById(“总计”).setAttribute(“值”,总计)

  • 我不得不将checked改为
    parseFloat(chkbox[I-1].title)
    ,以匹配if语句


  • 上面的示例使用的是产品,第一个定价为1,第二个定价为2。

    实际问题是什么?理想行为与实际行为?@geert3一旦我选中复选框,我就无法得到这些书的总价。我看到在一个地方你使用
    I-1
    作为数组中的索引,下一行你使用
    I
    @geert3实际上它应该解析值而不是标题,我将再次编辑,实际上我认为
    title
    是可以的,因为PHP代码说
    title='{$book['bookPrice']}'
    。我认为指数就是问题所在。建议您使用“开发者工具”单步浏览javascript(大多数浏览器使用F12或firefox的FireBug插件),非常感谢,它对我非常有用:D非常感谢
    var item = document.getElementsByClassName("item");
        var chkbox = document.getElementsByTagName("input");
    
        for(var i = 0; i < chkbox.length; i++){
            chkbox[i].onchange = function(){
                //Recalculate total
                getTotal();
            }
        }
    
        function getTotal(){
            var total = 0.0;
    
            for(var i = 1; i <= chkbox.length; i++){
                //If the checkbox is checked, add it to the total
                if(chkbox[i-1].checked){
                    total = total + parseFloat(chkbox[i].value);
                }
            }
    
            return total;
    
            document.getElementById("total").innerHTML = total;
        }