javascript - 怎样让价格重新叠加?

查看:80
本文介绍了javascript - 怎样让价格重新叠加?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

一个价格变量,下面若干个按钮,分别代表不同套餐。 点击叠加切换套餐价格?
现在每次点击并不会把上次套餐的价格清掉。

<div id="price">100</div>
 <dl class="taocan"   >
        <dt >套餐:</dt >
        <dd class="btn" data-price="100" >套餐一</dd >
        <dd class="btn" data-price="200" >套餐二</dd >
        <dd class="btn" data-price="300" >套餐三</dd >
        <dd class="btn" data-price="400" >套餐四</dd >
</dl >

var price= $('#price');
$(".btn").each(function () {
    var sum = parseInt(price.text()); //总价
    var _that = $(this);
    var getPrice = parseInt(_that.attr('data-price')); //获取套餐价格
    _that.click(function () {
      $(this).addClass('active').siblings().removeClass('active');
      sum += getPrice;
      price.text(sum)
    })
  });

解决方案

有点没太明白题主的意思、

需求再细化一下吧、

是类似复选的几个按钮吗?可以同时选多个套餐、再次点击就取消套餐是吗?

提供思路:

首先这个100是不固定的、不知道从哪来的

然后后面的四个套餐根据你的评论说法是单选

因为你的price可能会因为其他地方重新改变、所以不好做固定值去做计算

那最简单的方法就是在加新价格之前、从总价中减去上一个套餐的价格

var sum = parseInt(price.text()); //总价

_that.click(function () {
  var tmp = parseInt($(".active").attr('data-price'))
  $(this).addClass('active').siblings().removeClass('active');
  sum = sum - tmp + getPrice
  price.text(sum)
})

就是在active还未改变之前拿到上一个的值、做了减法之后给新的active

也可以不用上面的办法、

用两个变量控制价格、你现在的price是一个价格、再新定义一个price、不过这两个price的变化都要考虑进去

这篇关于javascript - 怎样让价格重新叠加?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆