简易计算商品总价

一.主要完成点

1.显示单个商品的数量统计,单价,总计

2.可以通过按钮添加来增加商品的数量和总计

3.实现总商品件数统计和总价值统计已经最贵商品统计

二.主要代码

html代码部分:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>计算商品总价</title>
	</head>
	<body>
		<ul id="list">
			<li>
				<input type="button" value="-" class="subtract" />
				<span>0</span>
				<input type="button" value="+"  class="add"/>
				单价:<em>15</em>元;
				小计:<strong>0</strong>元;
			</li>
			<li>
				<input type="button" value="-" class="subtract" />
				<span>0</span>
				<input type="button" value="+"  class="add"/>
				单价:<em>10</em>元;
				小计:<strong>0</strong>元;
			</li>
			<li>
				<input type="button" value="-" class="subtract" />
				<span>0</span>
				<input type="button" value="+"  class="add"/>
				单价:<em>5</em>元;
				小计:<strong>0</strong>元;
			</li>
			<li>
				<input type="button" value="-" class="subtract" />
				<span>0</span>
				<input type="button" value="+"  class="add"/>
				单价:<em>2</em>元;
				小计:<strong>0</strong>元;
			</li>
			<li>
				<input type="button" value="-" class="subtract" />
				<span>0</span>
				<input type="button" value="+"  class="add"/>
				单价:<em>1</em>元;
				小计:<strong>0</strong>元;
			</li>
		</ul>
		<p>商品一共<span id="num">0</span>件;<br />
		一共花费<span id="price">0</span>元;
		<br />其中最贵的商品单价是<span id="max">0</span>元;</p>
</body>
</html>

运行上述代码结果图:

 在完成主体部分后便使用js让其能够达到预想所要完成的点,在js中主要使用了对子类循环添加监听事件,在下部分时需要实时监控其变量使用父类事件委托来解决实时更新总价以及最贵单价:

js代码部分:

<script>	
			 // 当方入其中时
			 window.onload=function(){
			        var ul=document.getElementById("list"); // 获取主链表
			        var li=ul.getElementsByTagName("li"); // 获取主链表下的单链
					var price = document.getElementById("price");
					var prices = Number(price.innerHTML);
					var num = document.getElementById("num");
					var nums = Number(num.innerHTML);
					for(var i=0;i<li.length;i++){ // 循环输入直接一个函数省去全部
					    fn(li[i]);
					}
					
					// 对每个主链进行单独事件的处理
			        function fn(li){
			           // 按键
			            var em=li.getElementsByTagName("em")[0]; // 单价
			            var strong=li.getElementsByTagName("strong")[0]; // 小计
			            var span=li.getElementsByTagName("span")[0]; // 数量
					    var aBtn=li.getElementsByTagName("input"); 
			            var num1=Number(span.innerHTML);
			            var num2=parseFloat(em.innerHTML);
			            aBtn[0].onclick=function(){
			                num1--;
			                if(num1<0){ //这里判断若为0,不能再减
			                    num1=0;
			                }
			                span.innerHTML = num1;
			                strong.innerHTML=num1*num2;
							// 总件数减少
							nums--;
							if(nums<0){ //z这里判断若为0,不能再减
							    nums=0;
							}
							num.innerHTML = nums;
			            };
			            aBtn[1].onclick=function(){
			                num1++;
			                span.innerHTML = num1;
			                strong.innerHTML=  num1*num2;
							// 总件数增加
							nums++;
							num.innerHTML = nums;
			            }
			        }	
									
					// 计算总件可以在子元素中可以进行统计,但对于总花费,和实时获取最贵单价还是比价麻烦的所以使用事件委托
					ul.addEventListener('click',function(e){
						// 给父类设置事件
						e = e || window.event;
						let target = e.target || e.srcElement;
						
						// 置零每一次计算都是重新计算
						prices = 0;
						// 统计总价
						for (let i = 0,len = li.length; i < len; i ++){
							var em = document.getElementsByTagName("em")[i];
							var num = Number(em.innerHTML);
							var x = Number(document.getElementsByTagName("span")[i].innerHTML);
							let sum;
						    if (x != 0){
						    sum = num*x;
				         } else{
							sum = 0;		
						 }
						prices +=sum;
						price.innerHTML = prices;
						}
							
						// 统计最贵单价
						var max = document.getElementById("max");
						for (let i = 0,len = li.length; i < len; i ++){
							if (document.getElementsByTagName("span")[i].innerHTML != 0){
								var em = document.getElementsByTagName("em")[i].innerHTML; // 获取他的单价
								console.log(em);
								max.innerHTML = em;
								return; 
							}		
						}
						max.innerHTML = 0; // 这是在最后的进行置0防止在全部点击删除单价后还保留着最原始的单价
					},false);
			    }			
		</script>

至此完成所有目标,得到最后结果图演示:

三.总结 

  本次实例中用到了js对html中控件的点击事件监听来达到所要完成的目的,并对事件委托有了一定的使用。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用JavaScript来实现一个简易商品表单,求总价数量,具体实现步骤如下: 1. 在HTML中创建一个表单,包含商品名称、价格、数量等输入框,以及求总价数量的按钮。 2. 在JavaScript中获取表单中的商品信息,计算每个商品总价数量,并将结果显示在页面上。 下面是一个示例代码,可以根据实际需求进行修改: HTML代码: ``` <form> <div> <label>商品名称:</label> <input type="text" id="name1" value="商品1"> <label>价格:</label> <input type="number" id="price1" value="10"> <label>数量:</label> <input type="number" id="quantity1" value="1"> <label>小计:</label> <span id="subtotal1"></span> </div> <div> <label>商品名称:</label> <input type="text" id="name2" value="商品2"> <label>价格:</label> <input type="number" id="price2" value="20"> <label>数量:</label> <input type="number" id="quantity2" value="2"> <label>小计:</label> <span id="subtotal2"></span> </div> <div> <button type="button" id="calculate">计算总价数量</button> <label>总数量:</label> <span id="totalQuantity"></span> <label>总价:</label> <span id="totalPrice"></span> </div> </form> ``` JavaScript代码: ``` var calculateBtn = document.getElementById('calculate'); calculateBtn.addEventListener('click', function() { var quantity1 = parseInt(document.getElementById('quantity1').value); var price1 = parseFloat(document.getElementById('price1').value); var subtotal1 = quantity1 * price1; document.getElementById('subtotal1').innerHTML = subtotal1.toFixed(2); var quantity2 = parseInt(document.getElementById('quantity2').value); var price2 = parseFloat(document.getElementById('price2').value); var subtotal2 = quantity2 * price2; document.getElementById('subtotal2').innerHTML = subtotal2.toFixed(2); var totalQuantity = quantity1 + quantity2; document.getElementById('totalQuantity').innerHTML = totalQuantity; var totalPrice = subtotal1 + subtotal2; document.getElementById('totalPrice').innerHTML = totalPrice.toFixed(2); }); ``` 这段代码通过事件监听器,当“计算总价数量”按钮被点击时,获取表单中的商品信息,计算每个商品的小计和总数量,然后计算总价和总数量,并将结果显示在页面上。你可以根据实际需求进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要做程序员的牛杂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值