Js代码实现商品价钱总和(模拟购物车功能)

用js简单实现商品数量的选购、小计的计算以及总的价钱数、总的商品数量等一系列操作。代码如下:

题设的主体HTML代码如下:(以作事例)

<body>
<ul id="list">
  <li>樱桃<br>
    <input type="button" value="-" />
    <strong>0</strong>
    <input type="button" value="+" />
    单价:<em>12.5元</em>
    小计:<span>0元</span>
  </li>
  <li>香蕉<br>
    <input type="button" value="-" />
    <strong>0</strong>
    <input type="button" value="+" />
    单价:<em>2.5元</em>
    小计:<span>0元</span>
  </li>
  <li>火龙果<br>
    <input type="button" value="-" />
    <strong>0</strong>
    <input type="button" value="+" />
    单价:<em>8.5元</em>
    小计:<span>0元</span>
  </li>
  <li>榴莲<br>
    <input type="button" value="-" />
    <strong>0</strong>
    <input type="button" value="+" />
    单价:<em>28元</em>
    小计:<span>0元</span>
  </li>
  <li>车厘子<br>
    <input type="button" value="-" />
    <strong>0</strong>
    <input type="button" value="+" />
    单价:<em>14.5元</em>
    小计:<span>0元</span>
  </li>
  <li>菠萝<br>
    <input type="button" value="-" />
    <strong>0</strong>
    <input type="button" value="+" />
    单价:<em>7元</em>
    小计:<span>0元</span>
  </li>
</ul>
<p>
商品合计共:<em>0件</em>,共花费了:<em>0元</em><br />
其中最贵的商品单价是:<strong>0元</strong>
</p>
</body>
  • 《原生版》JavaScript代码如下:
<script>
window.onload = function(){
	var  oP = document.getElementsByTagName('p')[0];
	var  aEm = oP.getElementsByTagName('em');
	var  aStrong = oP.getElementsByTagName('strong')[0];
	
	var  oUl = document.getElementById('list');
	var  oLi = oUl.getElementsByTagName('li');
	var  oStrong = oUl.getElementsByTagName('strong');
	var  oSpan = oUl.getElementsByTagName('span');
	var  oEm = oUl.getElementsByTagName('em');

	var sum = 0;
	var emMax = 0;
	for(var i=0;i<oEm.length;i++){
		//最大的那个单价值
       if(parseFloat(oEm[i].innerHTML)>emMax){
       emMax=parseFloat(oEm[i].innerHTML);
       }
	   aStrong.innerHTML=emMax+'元';
	}
       //调用fn1()函数实现商品数量的选取
	for(var i=0;i<oLi.length;i++){
        fn1(oLi[i]);
	}
       //添加点击事件获取总的商品数量
        aEm[0].onclick = function(){
	for(var i=0;i<oStrong.length;i++){
		var a = Number(oStrong[i].innerHTML);
		sum+=a;
		aEm[0].innerHTML = sum+'件';
		}
		sum= 0;
	}
       //添加点击事件获取总的价钱
       aEm[1].onclick = function(){
	for(var i=0;i<oSpan.length;i++){
		var a = parseFloat(oSpan[i].innerHTML);
		sum+=a;
		aEm[1].innerHTML = sum+'元';
		}
		sum= 0;
	}
	
	
	function fn1(aLi){
		var oBtn = aLi.getElementsByTagName('input');
	    var	oStrong = aLi.getElementsByTagName('strong')[0];
		var	oEm = aLi.getElementsByTagName('em')[0];
		var	oSpan = aLi.getElementsByTagName('span')[0];
		var n1 = Number(oStrong.innerHTML);
		var n2 = parseFloat(oEm.innerHTML);
		

	   oBtn[0].onclick = function(){
			n1--;
			if(n1<0){
			   n1 = 0;
			}
			oStrong.innerHTML = n1;
			oSpan.innerHTML = n1*n2+'元';
			};
		oBtn[1].onclick = function(){
			n1++;
			oStrong.innerHTML = n1;
			oSpan.innerHTML = n1*n2+'元';
			};
	}
}
</script>


反思:上述代码添加点击事件获取商品的总价钱数以及总的商品数量,可能增加了用户负担。需要改进

  • 《改进版》JavaScript代码如下:
window.onload = function(){
	var oP = document.getElementsByTagName('p')[0];
	var	aEm = oP.getElementsByTagName('em');
	var	aStrong = oP.getElementsByTagName('strong')[0];
	var oUl = document.getElementById('list');
	var oLi = oUl.getElementsByTagName('li');
	var oStrong = oUl.getElementsByTagName('strong');
	for(var i=0;i<oLi.length;i++){
        fn1(oLi[i]);
	}

	function fn1(aLi){
		var oBtn = aLi.getElementsByTagName('input');
	    var	oStrong = aLi.getElementsByTagName('strong')[0];
		var	oEm = aLi.getElementsByTagName('em')[0];
		var	oSpan = aLi.getElementsByTagName('span')[0];
		var n1 = Number(oStrong.innerHTML);
		var n2 = parseFloat(oEm.innerHTML);
		//合计总价,必然要相加所有的小计
       function fn2(){
          var sum1=0;//定义一个临时变量,用来储存所加过的件数
          var sum2=0;//定义一个临时变量,用来储存所加过的小计
          var emMax=0;//定义一个临时变量,用来比较单价的大小
          for(var i=0;i<oLi.length;i++){
	     var strongs=oLi[i].getElementsByTagName("strong")[0];//获取到所有li的数量
             var spans=oLi[i].getElementsByTagName("span")[0];//获取到所有li的小计
             var em=oLi[i].getElementsByTagName("em")[0];//获取到所有li的单价
	     sum1=sum1+Number(strongs.innerHTML);
             sum2=sum2+parseFloat(spans.innerHTML);//合计即所有小计相加的结果,因为有小数所以要用parseFloat
          if(parseFloat(em.innerHTML)>emMax){//最大的那个单价值
              emMax=parseFloat(em.innerHTML);
                    }
                }
		aEm[0].innerHTML=sum1+'件';
                aEm[1].innerHTML=sum2+'元';
                aStrong.innerHTML=emMax+'元';
            }
	  fn2();
	  oBtn[0].onclick = function(){
			n1--;
			if(n1<0){
			   n1 = 0;
			}
			oStrong.innerHTML = n1;
			oSpan.innerHTML = n1*n2+'元';
			fn2();//调用合计之后的值
			};
	 oBtn[1].onclick = function(){
			n1++;
			oStrong.innerHTML = n1;
			oSpan.innerHTML = n1*n2+'元';
			fn2();
			};
	}
}
</script>
此时总的商品件数和商品总计会随用户的商品选择进行实时改变。
  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,需要分几个步骤来完成。首先,你需要从MySQL数据库中提取商品价格和数量信息。可以使用如下的MySQL语句: ```sql SELECT price, quantity FROM products WHERE id = 1; ``` 上面的语句中,products 表是存储商品信息的表,id=1 表示需要提取的商品的编号为 1。假设你已经得到了商品价格和数量信息,将它们保存到 JavaScript 变量 price 和 quantity 中。 接下来,你需要设置购物车中商品的数量。可以创建一个 input 元素,让用户输入购买数量。假设你将这个元素的 id 设置为 "quantity-input",那么可以使用如下的 JavaScript 代码获取用户输入的数量: ```javascript var quantityInput = document.getElementById('quantity-input'); var quantity = parseInt(quantityInput.value); ``` 上面的代码中,parseInt() 函数用于将用户输入的字符串转换成整数类型。假设用户输入的数量为 3,那么 quantity 变量的值就为 3。 最后,你可以计算购物车中商品价。可以使用如下的 JavaScript 代码: ```javascript var totalPrice = price * quantity; ``` 上面的代码中,* 运算符用于计算商品价。假设商品价格为 10 元,数量为 3 个,那么 totalPrice 变量的值就为 30 元。 综上所述,你可以使用如下的 JavaScript 代码来提取商品价格,设置商品数量并计算购物车价格总和: ```javascript // 从MySQL数据库中提取商品价格和数量信息 var price = 10; // 假设商品价格为 10 元 var quantity = 3; // 假设购买数量为 3 个 // 获取用户输入的购买数量 var quantityInput = document.getElementById('quantity-input'); var quantity = parseInt(quantityInput.value); // 计算购物车中商品价 var totalPrice = price * quantity; console.log(totalPrice); // 输出购物车价格总和 ``` 注意,上面的代码仅供参考,实际情况可能会有所不同,需要根据具体情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值