2025-02-15

 

使用JQuery  Clone 模板來實現商品信息的展示,展現形式可以通過修改模板中的td來確定每一行顯示多少個商品信息

商品信息使用JSON數據來模擬

同一個產品點擊多次,不會重復添加,而是在已有的基礎上數量+1,

商品數量也可以手動輸入,當輸入0時,該商品將自動從購物車刪除(點擊減號到小於1時,也會提示是否從購物車刪除商品信息)

每個產品的價格和總價都會根據添加和刪除的操作來動態計算

附下載鏈接: http://up.aiwalls.com/2011/1207/20111207052620634.rar

基本的功能都已經實現, 建議使用IE6,7,8,瀏覽器運行,其他瀏覽器沒有測試

 

 

HTML代碼:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>無標題文檔</title>

</head>

<body>

<h2 style="text-align:left">商品列表</h2>

<table width="800" border="0" id="tblProduct" cellpadding="1" cellspacing="1" bgcolor="black"> 

  <tr id="trMaster" bgcolor="white" style="display:none">

    <td>

    編號:<span>000001</span><br />

    名稱:<span>aa</span><br />

    價格:<span>2.5</span><br />

    描述:<span>aaaaa</span><br />

   <p style="text-align:right"><input type="button" name="btnBuy" value="buy" /></p>

    </td>

    <td>  

    編號:<span>000001</span><br />

    名稱:<span>aa</span><br />

    價格:<span>2.5</span><br />

    描述:<span>aaaaa</span><br />

   <p style="text-align:right"><input type="button" name="btnBuy" value="buy" /></p>  

    </td>

     <td> 

    編號:<span>000001</span><br /> 

    名稱:<span>aa</span><br />

    價格:<span>2.5</span><br />

    描述:<span>aaaaa</span><br />

   <p style="text-align:right"><input type="button" name="btnBuy" value="buy" /></p>  

    </td>

    <td> 

    編號:<span>000001</span><br /> 

    名稱:<span>aa</span><br />

    價格:<span>2.5</span><br />

    描述:<span>aaaaa</span><br />   

   <p style="text-align:right"><input type="button" name="btnBuy" value="buy" /></p>  

    </td>  

       

  </tr>

</table>

<h2 style="text-align:left">購物車</h2>

<table width="800" border="0" id="tblOrder" cellpadding="1" cellspacing="1" bgcolor="black">

    <tr bgcolor="white"><td>序號</td><td>編號</td><td>名稱</td><td>描述</td><td>數量</td><td>單價</td><td>總價</td><td>刪除</td></tr>

    <tr id="orderMarter" bgcolor="white" style="display:none">

    <td style=" width:5%">1</td>

    <td style=" width:10%">000001</td>

    <td style=" width:10%">aa</td>

    <td>aaaaa</td>

    <td style=" width:15%">

    <input type="text" name="txtNum" style="width:50px;" value="0" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"/>

    <input type="button" name='btnAdd' style="width:15px; text-align:center" value="+" />

    <input type="button" name='btnCut' style="width:15px; text-align:center" value="-" />

    </td>

    <td style=" width:10%">0</td>

    <td style=" width:10%"><font color="red">0</font></td>

    <td style=" width:5%; text-align:center"><input type="button" name='btnRemove' style="width:30px; text-align:center" value="X" /></td>

    </tr>

</table>

<table width="800" border="0" id="tblTotal" cellpadding="1" cellspacing="1" bgcolor="black">

    <tr bgcolor="white" align="right">

    <td>總價</td>

    <td id="tdTotal"><font color="#FF0000" size="+1" face="Arial, Helvetica, sans-serif">0.0</font></td>

    </tr>

</table>

 

</body>

JS 代碼

  View Code

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript">

/*

@@

@@

@@

*/

var product=[

{prodId:"000001",prodName:"aa",price:2.5,description:"aaaaa"},

{prodId:"000002",prodName:"bb",price:2.4,description:"bbbbb"},

{prodId:"000003",prodName:"cc",price:2.3,description:"ccccc"},

{prodId:"000004",prodName:"dd",price:2.2,description:"ddddd"},

{prodId:"000005",prodName:"ee",price:2.1,description:"eeeee"},

{prodId:"000006",prodName:"ff",price:2.0,description:"fffff"},

{prodId:"000007",prodName:"gg",price:1.9,description:"ggggg"},

{prodId:"000008",prodName:"hh",price:1.8,description:"hhhhh"},

{prodId:"000009",prodName:"ii",price:1.7,description:"iiiii"}

];

</script>

 

 

<script type="text/javascript">

var j=0,i=-1,k=-1,len=$("#trMaster td").size();//數據和模板的td 都可以自定義,格式正確即可

$.each(product,function(index,prod){

    i++;

    k++;

    if(i%len==0){

        j++;

         CloneTR(j);//根據模板來克隆行

    }

    if(k==len)

        k=0;

    setTD(j,k,prod.prodId,prod.prodName,prod.price,prod.description);//給克隆行的td 賦值

});

//根據模板來克隆行

function CloneTR(id){

    $("#trMaster").clone(true).css("display","block").attr("id","tr"+id).appendTo("#tblProduct");

    $("#tr"+id+" td span").empty();

}

//給克隆行的td 賦值

function setTD(trId,index,prodId,prodName,price,description){

    var tr=$("#tr"+trId);           

    $(tr).find("td:eq("+index+")").find("span:eq(0)").html(prodId);

    $(tr).find("td:eq("+index+")").find("span:eq(1)").html(prodName);

    $(tr).find("td:eq("+index+")").find("span:eq(2)").html(price);   

    $(tr).find("td:eq("+index+")").find("span:eq(3)").html(description);   

}

var tempId="";

var num=0;

//點擊buy

$("input[name='btnBuy']").click(function(){

var elem=$(this).parent().parent();//獲取點擊的button 的td

    var prodId=$(elem).find("span:eq(0)").html();

    var prodName=$(elem).find("span:eq(1)").html();

    var price=$(elem).find("span:eq(2)").html();

    var description=$(elem).find("span:eq(3)").html();

    if(prodId==""||prodId==null||prodId==undefined){

        alert("請點擊其他產品");

    }else{       

        if(tempId.indexOf(prodId)!=-1){

            if(confirm('已存在,確定數量+1 嗎?')){

                $("#tblOrder tr:gt(1)").each(function(){

                    if($(this).find("td:eq(1)").html()==prodId){

                        var num=$(this).find("td:eq(4)").find("input[name='txtNum']").attr("value");                   

                        $(this).find("td:eq(4)").find("input[name='txtNum']").attr("value",+num+1);//相當於parseInt(num)+1;

                    }

                });

            }

        }else{

            num++;

            CloneOrder(num,prodId,prodName,price,description);

        }

        tempId+=prodId+",";   

        $("#tdTotal").html("<font color='#FF0000' size='+1' face='Arial, Helvetica, sans-serif'>"+GetTotalPrice().toFixed(2)+"</font>");

    }

});

//根據訂單模板來clone 訂單

function CloneOrder(id,prodId,prodName,price,description){

    $("#orderMarter").clone(true).css("display","block").attr("id","tro"+id).appendTo("#tblOrder");

    var tr=$("#tro"+id);   

    $(tr).find("td:eq(0)").html(num);

    $(tr).find("td:eq(1)").html(prodId);

    $(tr).find("td:eq(2)").html(prodName);

    $(tr).find("td:eq(3)").html(description);   

    $(tr).find("td:eq(4)").find("input[name='txtNum']").attr("value","1");

    $(tr).find("td:eq(5)").html(price);

    $(tr).find("td:eq(6)").html("<font color='red'>"+price+"</font>");

}

//獲取總共價格

function GetTotalPrice(){

    var totalNum=0;

    $("#tblOrder tr:gt(1)").each(function(){

            var value=parseFloat($(this).find("td:eq(6)").text());           

            totalNum+=value;

    });

    return totalNum;

}

$(function(){

    $("#tblOrder input[name='txtNum']").bind("propertychange change blur",function(){

        var value=$(this).val();

        var tr=$(this).parent().parent();

        if(value==0){

            if(confirm('確定要刪除該商品嗎?')){

            var prodId=$(tr).find("td:eq(1)").html();               

                tempId=tempId.replace(prodId+",","");

                $(tr).remove();

            }

        }else{

            var price=$(tr).find("td:eq(5)").html();

            var total=value*price;

            $(tr).find("td:eq(6)").html("<font color='red'>"+total.toFixed(2)+"</font>");       

            $("#tdTotal").html("<font color='#FF0000' size='+1' face='Arial, Helvetica, sans-serif'>"+GetTotalPrice().toFixed(2)+"</font>");

        }

    });

    //加1

    $("#tblOrder input[name='btnAdd']").click(function(){

        var txtBox=$(this).parent().parent().find("td:eq(4)").find("input[name='txtNum']");

        var value=$(txtBox).attr("value");

            value=+value+1;

            $(txtBox).attr("value",value)

       

    });

    //減1

    $("#tblOrder input[name='btnCut']").click(function(){

        var txtBox=$(this).parent().parent().find("td:eq(4)").find("input[name='txtNum']");       

        var tr=$(this).parent().parent();

        var value=$(txtBox).attr("value");

        if(value>1){

            value=+value-1;

            $(txtBox).attr("value",value)

        }else{

            if(confirm('確定要刪除該商品嗎?')){

                var prodId=$(tr).find("td:eq(1)").html();               

                tempId=tempId.replace(prodId+",","");               

                $(tr).remove();

                $("#tdTotal").html("<font color='#FF0000' size='+1' face='Arial, Helvetica, sans-serif'>"+GetTotalPrice().toFixed(2)+"</font>");

            }

        }

    });

   

    //刪除btnRemove

    $("#tblOrder input[name='btnRemove']").click(function(){

        var tr=$(this).parent().parent();

        if(confirm('確定要刪除該商品嗎?')){

        var prodId=$(tr).find("td:eq(1)").html();   

        tempId=tempId.replace(prodId+",","");

                $(tr).remove();

                $("#tdTotal").html("<font color='#FF0000' size='+1' face='Arial, Helvetica, sans-serif'>"+GetTotalPrice().toFixed(2)+"</font>");

        }

    });

});

 

</script>

 

  摘自 曉風拂月

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *