本文目錄一覽:
- 1、求一個JS代碼,就APP購物車的代碼,可以在html直接實現的
- 2、javascript+jsp實現在1.html把商品放購物車,在2.html顯示購物車內的信息.看問題補充
- 3、JS代碼 做一個簡易的購物車 效果圖如下
- 4、jquery 實現加入購物車功能
- 5、關於javaScript問題 購物車的實現
求一個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試試。
原創文章,作者:ICHW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144284.html