php购物车js价钱总和,JS代码实现商品价钱总和(模拟购物车功能)

本文讨论了一段JavaScript代码,该代码用于在一个网页中动态显示商品的单价、数量和总价。原始代码在用户选择商品时需要手动触发事件来更新总件数和总价,这可能增加用户负担。改进后的代码通过添加事件监听器实现了商品选择的实时更新,使得总件数和总价随着用户操作自动变化,提高了用户体验。
摘要由CSDN通过智能技术生成

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

  • 樱桃

    0

    单价:12.5元

    小计:0元

  • 香蕉

    0

    单价:2.5元

    小计:0元

  • 火龙果

    0

    单价:8.5元

    小计:0元

  • 榴莲

    0

    单价:28元

    小计:0元

  • 车厘子

    0

    单价:14.5元

    小计:0元

  • 菠萝

    0

    单价:7元

    小计:0元

商品合计共:0件,共花费了:0元

其中最贵的商品单价是:0元

《原生版》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');

var oSpan = oUl.getElementsByTagName('span');

var oEm = oUl.getElementsByTagName('em');

var sum = 0;

var emMax = 0;

for(var i=0;i

//最大的那个单价值

if(parseFloat(oEm[i].innerHTML)>emMax){

emMax=parseFloat(oEm[i].innerHTML);

}

aStrong.innerHTML=emMax+'元';

}

//调用fn1()函数实现商品数量的选取

for(var i=0;i

fn1(oLi[i]);

}

//添加点击事件获取总的商品数量

aEm[0].onclick = function(){

for(var i=0;i

var a = Number(oStrong[i].innerHTML);

sum+=a;

aEm[0].innerHTML = sum+'件';

}

sum= 0;

}

//添加点击事件获取总的价钱

aEm[1].onclick = function(){

for(var i=0;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+'元';

};

}

}

f53e5763803ffc307c5f5bdc296b4d8e.png

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

《改进版》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

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

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();

};

}

}

此时总的商品件数和商品总计会随用户的商品选择进行实时改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值