动态计算购物车总价(数量可选),nextSibling属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>购物车,计算总价,数量可选,动态更新</title>
</head>
<body>
    <h2>我的购物车</h2>
    <input type="checkbox" name="fruits" value="5">苹果(5元)&nbsp;&nbsp;&nbsp;数量:<input type="number" min="1" value="1" id="苹果数量" class="numbers"><br/>
    <input type="checkbox" name="fruits" value="3">香蕉(3元)&nbsp;&nbsp;&nbsp;数量:<input type="number" min="1" value="1" id="香蕉数量" class="numbers"><br/>
    <input type="checkbox" name="fruits" value="7">西瓜(7元)&nbsp;&nbsp;&nbsp;数量:<input type="number" min="1" value="1" id="西瓜数量" class="numbers"><br/>
    <input type="checkbox" name="fruits" value="8">栗子(8元)&nbsp;&nbsp;&nbsp;数量:<input type="number" min="1" value="1" id="栗子数量" class="numbers"><br/>
    <input type="checkbox" name="fruits" value="10">哈密瓜(10元)数量:<input type="number" min="1" value="1" id="哈密瓜数量" class="numbers"><br/>
    <h3>总价格是:<span id="totalprice">--</span></h3>

    <script>
    var fruits = document.getElementsByName('fruits');
    var numbers = document.getElementsByClassName("numbers");

    for(var i=0;i<fruits.length;i++){
        fruits[i].onclick = count;
    }
    for(var i=0;i<numbers.length;i++){
        numbers[i].onclick = count;
    }
    function count(){
        var totalprice = 0;
        for(var i=0;i<fruits.length;i++){
            if(fruits[i].checked){
                var number = fruits[i].nextSibling.nextSibling.value;
                totalprice += parseFloat(fruits[i].value)*number;
            }
        }
        document.getElementById('totalprice').innerHTML = totalprice;
    }
    </script>
</body>
</html>
  1. fruits[i].nextSibling.nextSibling.value;获得水果复选框元素其后的数量input元素,两个input之间有一段文本节点,所以使用.nextSibling.nextSibling将两者联系起来。
  2. 注意:nextSibling属性会将元素之间的空格作为一个节点:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>nextsibling</title>
<body>
    <p>列表示例:</p>
    <ul id="myList">
        <li id="item1">Coffee</li><li id="item2">Tea</li>
    </ul>
    <p id="demo">点击按钮来获得首个项目的下一个同胞的 id。</p>
    <button onclick="myFunction()">试一下</button>
    <script>
    function myFunction(){
        var x=document.getElementById("demo");  
        x.innerHTML=document.getElementById("item1").nextSibling.id;
    }
    </script>
    <p><b>注释:</b>元素中的空格被视作文本,而文本被视作文本节点。</p>
    <p>请尝试在两个 &lt;li&gt;元素之间添加空格,结果将是 "undefined"。</p>
</body>
</html>
  1. 复选框元素被选中时触发的是onclick事件,而没有什么oncheck事件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值