js实现购物车

这篇具有很好参考价值的文章主要介绍了js实现购物车。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

###

嘎嘎原生,看就完了

###

#

#

html部分

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="css.css" />
    <title>Document</title>
  </head>
  <body>
    <div class="common">
      <a href="javascript:;" onclick="show()">添加信息</a>
      <input type="text" value="" id="search" />
      <input type="submit" value="搜索" onclick="search()" />
      <div class="header">
        <div class="row01">
          <!--传this关键字,代表input标签对象-->
          <input type="checkbox" class="chkall" onclick="checkall(this)" />全选
        </div>
        <div class="row02">商品标题</div>
        <div class="row03">数量</div>
        .
        <div class="row04">单价(元)</div>
        <div class="row05">总价(元)</div>
        <div class="row06">操作</div>
      </div>

      <div class="goods"></div>

      <div class="header">
        <div class="row01" onclick="delall(this)">删除全部</div>
        <div class="row02"></div>
        <div class="row03"></div>
        <div class="row04">总共<b>2</b>件商品</div>
        <div class="row05">总价<span>1999.9</span>元</div>
        <div class="row06"></div>
      </div>
    </div>
    <div class="info">
      <a href="javascript:;" onclick="hide()">X</a>
      <ul>
        <li>
          <label for="">商品标题</label>
          <input type="text" id="title" value="" placeholder="请输入商品标题" />
        </li>
        <li>
          <label for="">商品数量</label>
          <input type="text" id="num" value="" placeholder="请输入商品数量" />
        </li>
        <li>
          <label for="">商品单价</label>
          <input type="text" id="price" value="" placeholder="请输入商品单价" />
        </li>
        <li>
          <label for="">&nbsp;</label>
          <input type="submit" onclick="add()" value="提交" />
        </li>
      </ul>
    </div>
    <script src="js1.js"></script>
  </body>
</html>

###

css部分

* {
  margin: 0;
  padding: 0;
}
body {
  /* position: relative; */
  height: 800px;
}
.common {
  width: 1200px;
  margin: 0 auto;
}
.header {
  background: #e3e3e3;
  height: 60px;
  line-height: 60px;
}
.row01,
.row02,
.row03,
.row04,
.row05,
.row06 {
  display: inline-block;
  width: 10%;
  text-align: center;
}
.row02 {
  width: 30%;
}
.row03 {
  width: 19%;
}
.good {
  height: 60px;
  line-height: 60px;
}
.row03 a,
.row03 input {
  display: inline-block;
  width: 30px;
  height: 30px;
  border: 1px solid #e3e3e3;
  text-decoration: none;
  line-height: 30px;
  text-align: center;
  vertical-align: middle;
}
.info {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
  height: 400px;
  width: 400px;
  background-color: #e3e3e3;
  display: none;
}
.info ul {
  list-style: none;
}
.info ul li {
  height: 50px;
  line-height: 50px;
  padding: 0 20px;
}
.info ul li input {
  height: 40px;
  line-height: 40px;
  width: 220px;
  margin-top: 20px;
}
.info a {
  display: inline-block;
  float: right;
  text-align: center;
  border: 1px solid white;
  width: 30px;
  height: 30px;
}

###

js部分文章来源地址https://www.toymoban.com/news/detail-812775.html

let good =
  JSON.parse(localStorage.getItem("good")) ||
  [
    /* {
        title:'小米手机',
        num:1,
        price:1999.9,
        totalprice:1999.0,
        ischecked:''
    },
    {
        title:'红米手机',
        num:1,
        price:1999.9,
        totalprice:1999.0,
        ischecked:''
    },
    {
        title:'苹果手机',
        num:1,
        price:1999.9,
        totalprice:1999.0,
        ischecked:''
    } */
  ];

function $(selector) {
  return document.querySelector(selector);
}

function createhtml(good) {
  let html = "";
  good.forEach(function (item, index) {
    html += `<div class="good">
        <div class="row01">
            <input type="checkbox" class="chk" ${item.ischecked} onclick="chk(${index})">
        </div>
        <div class="row02">
           ${item.title}
        </div>
        <div class="row03">
            <a href="javascript:;" onclick="inc(${index})">+</a>
            <input type="text" value="${item.num}">
            <a href="javascript:;" onclick="dec(${index})">-</a>
        </div>
        <div class="row04">
            ${item.price}
        </div>
        <div class="row05">
            ${item.totalprice}
        </div>
        <div class="row06">
            <a href="javascript:;" onclick="del(${index})">删除</a>
        </div>
    </div>
        `;
  });
  total();
  $(".goods").innerHTML = html;
}
createhtml(good);

function add() {
  var title = document.querySelector("#title").value;
  var num = parseInt(document.querySelector("#num").value);
  var price = parseInt(document.querySelector("#price").value);

  if (title == "" || num == "" || price == "") {
    return false;
  }
  var obj = {
    title: title,
    num: num,
    price: parseFloat(price),
    totalprice: parseInt(num) * parseInt(price),
    idchecked: "",
  };
  good.push(obj);
  hide();
  localStorage.setItem("good", JSON.stringify(good));
  createhtml(good);
}

function show() {
  document.querySelector(".info").style.display = "block";
}
function hide() {
  document.querySelector(".info").style.display = "none";
}

function del(index) {
  good.splice(index, 1);
  createhtml(good);
  localStorage.setItem("good", JSON.stringify(good));
}

function delall() {
  for (var i = good.length - 1; i >= 0; i--) {
    if (good[i].ischecked) {
      good.splice(i, 1);
    }
  }
  localStorage.setItem("good", JSON.stringify(good));
  createhtml(good);
}

function inc(index) {
  good[index].num++;
  good[index].totalprice = (good[index].num * good[index].price).toFixed(2);
  createhtml(good);
}
function dec(index) {
  if (good[index].num <= 1) {
    return false;
  }
  good[index].num--;
  good[index].totalprice = (good[index].num * good[index].price).toFixed(2);
  createhtml(good);
}

function checkall(obj) {
  good.forEach(function (item) {
    item.ischecked = obj.checked ? "checked" : "";
  });
  createhtml(good);
}

function chk(index) {
  good[index].ischecked = good[index].ischecked ? "" : "checked";
  var istrue = good.every(function (item) {
    return item.ischecked != "";
  });
  $(".chkall").checked = istrue;
  createhtml(good);
}

function search() {
  var keyword = document.querySelector("#search").value;
  var arr = [];
  if (keyword) {
    arr = good.filter(function (item) {
      return item.title.indexOf(keyword) != -1;
    });
  } else {
    arr = good;
  }
  createhtml(arr);
}

function total() {
  var totalnum = 0,
    totalprice = 0;
  good.forEach(function (item) {
    if (item.ischecked) {
      totalnum += item.num;
      totalprice += parseFloat(item.totalprice);
    }
  });
  $(".row04 b").innerHTML = totalnum;
  $(".row05 span").innerHTML = totalprice.toFixed(2);
}

到了这里,关于js实现购物车的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML+CSS+JavaScript实现网络购物车

    1 页面布局 购物车由一个table标签和一个div标签构成。案例在Chrome浏览器运行效果,如图所示。 table标签共有5行6列,第1行是表头,第2-5行的每一行都代表一个商品,依次用td标签存放商品的勾选框、商品缩略图及名称、商品单价、商品增减操作按钮以及小计、删除按钮等。

    2024年02月05日
    浏览(28)
  • 使用JavaScript实现动态生成并管理购物车的深入解析

    在当前的互联网时代,电子商务已成为我们日常生活的重要组成部分。购物车作为电子商务网站的核心功能之一,其实现方式对于用户体验至关重要。本文将深入探讨如何使用JavaScript实现一个动态生成并管理购物车的功能,并详细介绍其实现细节,同时附上相关代码。 购物

    2024年01月24日
    浏览(34)
  • 记录-JS简单实现购物车图片局部放大预览效果

    代码不多,先看一下 HTML 里面结构很简单,初始化 MagnifyingGlass 对象来关联一个 IMG 标签来实现放大。 再看一下 MagnifyingGlass 上面的就是全部逻辑,实现方法肯定不是最优的,但是其中可以联想到通过像素点的操作实现任意效果。 可以启动一个 node 本地服务,首先见一个

    2023年04月20日
    浏览(53)
  • 使用Vue.js框架的指令和事件绑定实现一个购物车的页面布局

    使用了v-model指令来实现全选/全不选的功能,当全选框被点击时,isAllChecked的值会被改变。 使用了v-if指令来判断购物车中是否有商品,如果有商品则渲染商品列表,否则显示购物车为空的提示。 使用了v-for指令来遍历datalist数组,渲染每个商品项。 使用了@change事件来监听商

    2024年02月12日
    浏览(26)
  • javascript+css+html购物车案例

    javascript代码部分主要实现三部分功能  1、商品数量增加(减少)同时小计增加(减少) 这部分主要是通过for循环给增加(减少)按钮绑定点击事件 1)点击后计数器自增(自减) 2)计数器数量*对应商品单价 赋值给对应商品小计(涉及到数据类型转换) parseInt(\\\'12ccc\\\' ) →

    2024年02月02日
    浏览(49)
  • 【uniapp 开发小程序】购物车功能,实现全选、反选、单选、计算总价

    uniapp 开发小程序,实现购物车功能,实现全选、反选、单选、计算总价 关键代码: return totalPrice.toFixed(2); // 保留两位小数 否则会出现多位小数现象:

    2024年02月11日
    浏览(14)
  • HTML+CSS+JavaScript:渲染电商站购物车页面

     根据下图渲染购物车页面 以下是缺失JS部分的代码,感兴趣的小伙伴可以先自己试着写一写

    2024年02月14日
    浏览(18)
  • [前端] 简易购物车的Hook版本

    利用所学习的React +Hook 完成一个简易的购物车效果,案例如下所示。 https://github.com/dL-hx/react18-advance 这个效果首先准备了对应的json数据,然后再去拆分组件,最后实现逻辑的部分,代码如下:

    2024年02月13日
    浏览(20)
  • Android商城开发----点击加入购物车,购物车商品的增删减

    上一章节:【分类页面】点击左侧类别,实现右侧对应类别商品的展示 本文是在上一章节基础上开发的,点击【分类】页面商品的加入购物车按钮,实现将商品加入购物车的功能。 本文主要实现的功能是: 1.点击加入购物车按钮,将商品加入购物车。 2.点击相同的商品加入

    2024年02月03日
    浏览(39)
  • JavaWeb(10)——前端综合案例4(购物车示例)

           购物车需要展示一个已加入购物车的商品列表,包含商品名称、商品单价、购买数量和操作 等信息,还需要实时显示购买的总价。其中购买数量可以增加或减少,每类商品还可以从购物车中移除。最终实现的效果大致如图所示。 基础版 plus版              先在

    2024年02月05日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包