首页 > 编程知识 正文

用js写的一段网上购物车的代码,javascript购物车代码

时间:2023-12-29 13:16:56 阅读:330398 作者:HVLV

本文目录一览:

求一个JS代码,就APP购物车的代码,可以在html直接实现的

给楼主做了一个,JS实现商品计数的加和减,最少不能少于1,最多不大于99,代码里面有注释,方面楼主查看和使用。

javascript+jsp实现在1.html把商品放购物车,在2.html显示购物车内的信息.看问题补充

一般来说,购物车信息是放在数据库的。不建议放在session。添加购物车就向数据库添加一条数据,另外一个页面刷新自然就可以获取数据

JS代码 做一个简易的购物车 效果图如下

楼主是想要点击合计就是出数值还是什么?如果说点击合计就算出值的话如下

table width="400" border="1"

    tr

     th rows="5"简易购物车/th

    /tr

    tr

     td商品名称/td

     td数量(件)/td

     td单价(美元)/td

     td运费(美元)/td

     tdbutton onclick="fun()"合计/button/td

    /tr

    tr

     tdinput type="text" name="goodsName" //td

     tdinput type="text" name="num" id="num" //td

     tdinput type="text" name="price" id="price" //td

     tdinput type="text" name="freight" id="freight" //td

     tdinput type="text" name="total" id="total" //td

    /tr

/table

script

function fun(){

var num = document.getElementById("num").value;

var price = document.getElementById("price").value;

        var freight = parseInt(document.getElementById("freight").value);

        var total = (price * num) + freight;

        document.getElementById("total").value = total;

}

/script

jquery 实现加入购物车功能

参考以下代码:

注意需要导入jquery.js.

!DOCTYPE html  

html  

  head  

    title购物车----jQuery/title  

    meta charset="utf-8" /  

    style type="text/css"  

      h1 {  

        text-align:center;  

      }  

      table {  

        margin:0 auto;  

        width:60%;  

        border:2px solid #aaa;  

        border-collapse:collapse;  

      }  

      table th, table td {  

        border:2px solid #aaa;  

        padding:5px;  

      }  

      th {  

        background-color:#eee;  

      }  

    /style  

    script type="text/javascript" src="./js/jquery.js"/script  

    script type="text/javascript"  

      function add_shoppingcart(btn){//将btn(dom)转换为jQuery对象  

        //先获取商品名字和单价还有库存以备后面使用  

        var $tds = $(btn).parent().siblings();  

        //$tds.eq(0)是jQuery对象  $tds[0]是DOM对象  

        var name = $tds.eq(0).html();//string  

        var price = $tds.eq(1).html();//string  

        var stock = $tds.eq(3).html();//string  

          

        //查看库存是否还有=0  

        if(stock = 0){  

          return;     

        }  

          

        //无论购物车中是否有该商品,库存都要-1  

        $tds.eq(3).html(--stock);  

          

        //在添加之前确定该商品在购物车中是否存在,若存在,则数量+1,若不存在则创建行  

        var $trs = $("#goodstr");  

        for(var i=0;i$trs.length;i++){  

          var $gtds = $trs.eq(i).children();  

          var gName = $gtds.eq(0).html();  

          if(name == gName){//若存在  

            var num = parseInt($gtds.eq(2).children().eq(1).val());  

            $gtds.eq(2).children().eq(1).val(++num);//数量+1  

            //金额从新计算  

            $gtds.eq(3).html(price*num);  

            return;//后面代码不再执行  

          }  

        }  

        //若不存在,创建后追加  

        var li =  

          "tr"+  

            "td"+name+"/td"+  

            "td"+price+"/td"+  

            "td align='center'"+  

              "input type='button' value='-' onclick='decrease(this);'/ "+  

              "input type='text' size='3' readonly value='1'/ "+  

              "input type='button' value='+' onclick='increase(this);'/"+  

            "/td"+  

            "td"+price+"/td"+  

            "td align='center'"+  

              "input type='button' value='x' onclick='del(this);'/"+  

            "/td"+  

          "/tr";  

        //追加到#goods后面  

        $("#goods").append($(li));  

          

        //总计功能  

        total();  

      }  

        

      //辅助方法--单击购物车中的"+"  "-"  "x"按钮是找到相关商品所在td,以jQuery对象返回  

      function findStock(btn){  

        var name = $(btn).parent().siblings().eq(0).html();//获取商品名字  

        //注意table默认有行分组,若此处使用 $("#table1tr:gt(0)")则找不到任何tr  

        var $trs = $("#table1tbodytr:gt(0)");  

        for(var i=0;i$trs.length;i++){  

          var fName = $trs.eq(i).children().eq(0).html();  

          if(name == fName){//找到匹配的商品  

            return $trs.eq(i).children().eq(3);  

          }  

        }  

      }  

        

      //增加"+"功能  

      function increase(btn){  

        //获取该商品库存看是否=0  

        var $stock = findStock(btn);  

        var stock = $stock.html();  

        if(stock = 0){  

          return;  

        }  

        //库存-1    

        $stock.html(--stock);  

        //购物车数据改变  

        var $td = $(btn).prev();  

        var num = parseInt($td.val());//number  

        //num此时为number类型(在计算时会自动转换为number类型)  

        $td.val(++num);  

        //获取单价,再加计算前要先转换为number类型  

        var price = parseInt($(btn).parent().prev().html());  

        $(btn).parent().next().html(num*price);  

          

        //总计功能  

        total();  

      }  

        

      //减少"-"功能  

      function decrease(btn){  

        //该商品数量=1时候不能再减少  

        var num = parseInt($(btn).next().val());  

        if(num = 1){  

          return;     

        }  

        var $stock = findStock(btn);  

        //库存+1  

        var stock = $stock.html();  

        $stock.html(++stock);  

        //商品数量-1  

        $(btn).next().val(--num);  

        //从新计算金额  

        var price = parseInt($(btn).parent().prev().html());  

        $(btn).parent().next().html(price*num);  

          

        //总计功能  

        total();  

      }  

        

      //"x"删除按钮功能  

      function del(btn){  

        //将商品数量归还库存  

        var $stock = findStock(btn);  

        var stock = parseInt($stock.html());  

        var num = parseInt($(btn).parent().prev().prev().children().eq(1).val());  

        $stock.html(num + stock);  

        //清空改行商品列表  

        $(btn).parent().parent().remove();  

          

        //总计功能  

        total();  

      }  

    //总计功能  

    function total(){  

      //获取所有购物车中的trs  

      var $trs = $("#goods tr");  

      var amount = 0;  

      for(var i=0;i$trs.length;i++){  

        var money = parseInt($trs.eq(i).children().eq(3).html());  

        amount += money;  

      }  

      //写入总计栏  

      $("#total").html(amount);  

    }  

    /script  

  /head  

  body  

    h1真划算/h1  

    table id="table1"  

      tr  

        th商品/th  

        th单价(元)/th  

        th颜色/th  

        th库存/th  

        th好评率/th  

        th操作/th  

      /tr     

      tr  

        td罗技M185鼠标/td  

        td80/td  

        td黑色/td  

        td5/td  

        td98%/td  

        td align="center"  

          input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/  

        /td  

      /tr  

      tr  

        td微软X470键盘/td  

        td150/td  

        td黑色/td  

        td9028/td  

        td96%/td  

        td align="center"  

          input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/  

        /td  

      /tr  

      tr  

        td洛克iphone6手机壳/td  

        td60/td  

        td透明/td  

        td672/td  

        td99%/td  

        td align="center"  

          input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/  

        /td  

      /tr  

      tr  

        td蓝牙耳机/td  

        td100/td  

        td蓝色/td  

        td8937/td  

        td95%/td  

        td align="center"  

          input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/  

        /td  

      /tr  

      tr  

        td金士顿U盘/td  

        td70/td  

        td红色/td  

        td482/td  

        td100%/td  

        td align="center"  

          input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/  

        /td  

      /tr  

    /table  

    

    h1购物车/h1  

    table  

      thead  

        tr  

          th商品/th  

          th单价(元)/th  

          th数量/th  

          th金额(元)/th  

          th删除/th  

        /tr  

      /thead  

      tbody id="goods"  

      /tbody  

      tfoot  

        tr  

          td colspan="3" align="right"总计/td  

          td id="total"/td  

          td/td  

        /tr  

      /tfoot  

    /table      

  /body  

/html

最终效果图:

关于javaScript问题 购物车的实现

关于只有最后一个文本框能触发checknum方法的问题:

其实这里有个逻辑错误,主要是%=i%中的i是多少的问题。从你贴出来的代码看,你是不是连JS代码也循环输出了吧,也就是有几条购物信息,就会生成几个checknum方法,在JS里,同函数名的方法如果多次定义,则只有最后一个定义的方法有效果,那最后一个checknum方法里的%=i%实际就只指代最后一个文本框了。结果就是只有最后一个文本框有效果。

其实楼主只需要循环输出表格,JS代码只用一个就行了,只要在文本框触发JS动作时,把%i%作为参数传进JS方法就行了,例如,你可以这么写:

...

td width="58" height="30"input name="num%=i%" size="5" type="text" value="%=goodsitem.number%" onBlur="checknum(this.form,%=i%)"/td

...

把JS方法放到循环外面,这么写:

function checknum(myform,i){

var inp = myform['num'+i];

if(isNaN(inp.value) || inp.value.indexOf('.')!=-1){

alert("请不要输入非法字符!");inp.focus();return;}//判断是否为数字值

if(inp.value%=leave%){alert("请输入小于现有库存 ("+%=leave%+") 的数量!");inp.focus();return;}

if(inp.value==0){

alert("请输入大于1的整数!");inp.focus();return;}

if(inp.value==""){

alert("请输入修改的数量!");inp.focus();return;}

myform.submit();

}

关于数字修改后触发checknum方法的问题:

楼主的checknum方法最后是要提交表单的,所以如果用键盘事件,那每一次输入一个字符或删除一个字符,都会触发表单提交动作,这应该不是楼主要的结果。字符修改后触发JS方法有专门的事件处理方法onchange。楼主可以吧onblur换成onchange试试。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。