js中的DOM模擬購(gòu)物車(chē)功能
效果圖:

代碼如下:
<!DOCTYPE html>
<html>
<head>
<title> new document </title>
<meta charset="utf-8">
<style>
table{
border:1px solid #000;
border-collapse:collapse;
width:600px;
}
td{
border:1px solid #000;
text-align:center;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<td>名稱</td>
<td>單價(jià)</td>
<td>數(shù)量</td>
<td>小計(jì)</td>
</tr>
</thead>
<tbody id="tbody">
<tr>
<td>iphone6</td>
<td>4488</td>
<td>
<button onclick="btnClick(this)">-</button>
<span>1</span>
<button onclick="btnClick(this)">+</button>
</td>
<td>4488</td>
</tr>
<tr>
<td>iphone6</td>
<td>5288</td>
<td>
<button onclick="btnClick(this)">-</button>
<span>1</span>
<button onclick="btnClick(this)">+</button>
</td>
<td>5288</td>
</tr>
<tr>
<td>iphone6</td>
<td>4288</td>
<td>
<button onclick="btnClick(this)">-</button>
<span>1</span>
<button onclick="btnClick(this)">+</button>
</td>
<td>4288</td>
</tr>
</tbody>
<tfoot>
<td colspan="3" align="right">總計(jì):</td>
<td id="all_total"></td>
</tfoot>
</table>
<script>
function btnClick(btn){
//聲明 spanValue 變量,用于保存 span中的數(shù)據(jù)
var spanValue;
//1、更改 span 中的數(shù)據(jù)
//1.1 判斷 btn 是+還是-
if(btn.textContent == "+"){
//1.2 根據(jù) btn 找到 span
var span=btn.previousElementSibling;
//1.3 獲取 span里的數(shù)據(jù)
spanValue=parseInt(span.textContent);
//1.4 更新 span中的數(shù)據(jù)
spanValue+=1;
span.textContent=spanValue;
}else{
//減法操作
var span = btn.nextElementSibling;
//1.3 獲取 span里的數(shù)據(jù)
spanValue=parseInt(span.textContent);
//1.4 更新 span中的數(shù)據(jù)
if(spanValue > 1){
spanValue-=1;
span.textContent=spanValue;
}
}
//2.計(jì)算 小計(jì)
//2.1 先 獲取 單價(jià) 元素(tdPrice)
var tdPrice=btn.parentNode.previousElementSibling;
//2.2 獲取 單價(jià) 元素中的 數(shù)值(price)
var price=parseInt(tdPrice.textContent);
//2.3 計(jì)算小計(jì)(spanValue*price),保存在 total
var total=price*spanValue;
//2.4 獲取 小計(jì) 元素(tdTotal)
var tdTotal=btn.parentNode.nextElementSibling;
//2.5 將 total 的值 賦值給 tdTotal元素
tdTotal.textContent=total;
//調(diào)用 計(jì)算總計(jì) 的函數(shù)
calAllTotal();
}
/**
* 計(jì)算總計(jì)
*/
function calAllTotal(){
//1、獲取 id為tbody 中的所有tr
var tbody = document.getElementById("tbody");
var trs=tbody.getElementsByTagName("tr");
console.log(trs);
//2、循環(huán)遍歷所有tr,找到每個(gè)tr的最后一個(gè)td
var all_total=0;
for(var i=0;i<trs.length;i++){
var tr=trs[i];
//3、累加 每個(gè) td 的值 計(jì)算總計(jì)
//3.1 獲取 tr 中的 最后一個(gè)td
var lastTd=tr.lastElementChild;
var lastTdValue=parseInt(lastTd.textContent);
all_total += lastTdValue;
}
//4、賦值
document.getElementById("all_total").textContent=all_total;
}
//加載時(shí)調(diào)用 calAllTotal() 計(jì)算現(xiàn)有的總計(jì)
calAllTotal();
</script>
</body>
</html>
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- js購(gòu)物車(chē)實(shí)現(xiàn)思路及代碼(個(gè)人感覺(jué)不錯(cuò))
- Javascript操縱Cookie實(shí)現(xiàn)購(gòu)物車(chē)程序
- 簡(jiǎn)單的前端js+ajax 購(gòu)物車(chē)框架(入門(mén)篇)
- js實(shí)現(xiàn)簡(jiǎn)單的購(gòu)物車(chē)有圖有代碼
- 原生js模擬淘寶購(gòu)物車(chē)項(xiàng)目實(shí)戰(zhàn)
- Javascript操縱Cookie實(shí)現(xiàn)購(gòu)物車(chē)程序
- JavaScript編寫(xiě)一個(gè)簡(jiǎn)易購(gòu)物車(chē)功能
- 基于Vuejs實(shí)現(xiàn)購(gòu)物車(chē)功能
- 利用Angularjs和bootstrap實(shí)現(xiàn)購(gòu)物車(chē)功能
- js+cookies實(shí)現(xiàn)懸浮購(gòu)物車(chē)的方法
相關(guān)文章
js當(dāng)一個(gè)變量為函數(shù)時(shí) 應(yīng)該注意的一點(diǎn)細(xì)節(jié)小結(jié)
變量testFun為一個(gè)匿名函數(shù),匿名函數(shù)返回的一個(gè)testFun.init對(duì)象(也是一個(gè)匿名函數(shù))2011-12-12
Javascript 圓角div的實(shí)現(xiàn)代碼
為什么要做圓角的div: 圓角div平滑美觀,某些情況下有比較不錯(cuò)的效果。比如說(shuō)要做一個(gè)報(bào)message的消息框,那么動(dòng)態(tài)的生成一個(gè)圓角div則很有意義。而對(duì)html樣式控制的css本身是不直接支持圓角div的。2009-10-10
webpack配置文件外置的兩種實(shí)現(xiàn)方式
webpack配置環(huán)境變量文件,是根據(jù)打包命令尋找對(duì)應(yīng)的環(huán)境變量文件,從而獲取接口地址,本文就來(lái)介紹一下webpack配置文件外置的兩種實(shí)現(xiàn)方式,感興趣的可以了解一下2023-12-12
JavaScript仿小米官網(wǎng)注冊(cè)登錄功能的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)JavaScript實(shí)現(xiàn)仿小米官網(wǎng)登錄注冊(cè)完整功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
詳解JS去重及字符串奇數(shù)位小寫(xiě)轉(zhuǎn)大寫(xiě)
本篇文章主要介紹了詳解JS去重及字符串奇數(shù)位小寫(xiě)轉(zhuǎn)大寫(xiě) ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12
bootstrap使用validate實(shí)現(xiàn)簡(jiǎn)單校驗(yàn)功能
這篇文章主要為大家詳細(xì)介紹了bootstrap使用validate實(shí)現(xiàn)簡(jiǎn)單校驗(yàn)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12

