購(gòu)物車

<!DOCTYPE html>

<html>

<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">

? ? <title>購(gòu)物車</title>

? ? <style>

? ? ? ? table {

? ? ? ? ? ? border-collapse: collapse;

? ? ? ? }

? ? ? ? td,

? ? ? ? th {

? ? ? ? ? ? text-align: center;

? ? ? ? ? ? border: 1px solid #ccc;

? ? ? ? ? ? padding: 2px 10px;

? ? ? ? }

? ? ? ? td img {

? ? ? ? ? ? width: 100px;

? ? ? ? }

? ? ? ? input {

? ? ? ? ? ? width: 40px;

? ? ? ? ? ? text-align: center;

? ? ? ? ? ? outline: none;

? ? ? ? }

? ? ? ? tfoot td{

? ? ? ? ? ? text-align: right;

? ? ? ? }

? ? </style>

</head>

<body>

? ? <table>

? ? ? ? <thead>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <th><input id="ckAll" type="checkbox">全選</th>

? ? ? ? ? ? ? ? <th>商品名稱</th>

? ? ? ? ? ? ? ? <th>商品圖片</th>

? ? ? ? ? ? ? ? <th>商品價(jià)格</th>

? ? ? ? ? ? ? ? <th>購(gòu)買數(shù)量</th>

? ? ? ? ? ? ? ? <th>小計(jì)</th>

? ? ? ? ? ? ? ? <th>操作</th>

? ? ? ? ? ? </tr>

? ? ? ? </thead>

? ? ? ? <tbody>

? ? ? ? </tbody>

? ? ? ? <tfoot>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td colspan="7">

? ? ? ? ? ? ? ? ? ? <span>總計(jì):</span>

? ? ? ? ? ? ? ? ? ? <span id="total"></span>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? </tfoot>

? ? ? ? <script>

? ? ? ? ? ? let goodses = [

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? name: 'iphone手機(jī)',

? ? ? ? ? ? ? ? ? ? img: 'https://img10.360buyimg.com/n7/jfs/t1/132022/23/12216/60913/5f86195bEacd08599/c5dc348d3f943324.jpg',

? ? ? ? ? ? ? ? ? ? price: 5999,

? ? ? ? ? ? ? ? ? ? count: 3,

? ? ? ? ? ? ? ? ? ? isck:false

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? name: '華為手機(jī)',

? ? ? ? ? ? ? ? ? ? img: 'https://img14.360buyimg.com/n7/jfs/t1/175302/26/12283/109959/60b5c73aE5346afc7/5d3d82e66d63e1ae.jpg',

? ? ? ? ? ? ? ? ? ? price: 7999,

? ? ? ? ? ? ? ? ? ? count: 2,

? ? ? ? ? ? ? ? ? ? isck:true

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? name: '小米手機(jī)',

? ? ? ? ? ? ? ? ? ? img: 'https://img11.360buyimg.com/n7/jfs/t1/147090/30/15709/47809/5fbe06d6E0eb8239d/a2e900f693d6e973.jpg',

? ? ? ? ? ? ? ? ? ? price: 4999,

? ? ? ? ? ? ? ? ? ? count: 4,

? ? ? ? ? ? ? ? ? ? isck:false

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? name: '三星手機(jī)',

? ? ? ? ? ? ? ? ? ? img: 'https://img14.360buyimg.com/n7/jfs/t1/137967/23/12904/71368/5f9f6bb7E1055f751/49c3a12c71172d4b.jpg',

? ? ? ? ? ? ? ? ? ? price: 8999,

? ? ? ? ? ? ? ? ? ? count: 1,

? ? ? ? ? ? ? ? ? ? isck:false

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ]

? ? ? ? ? ? //加載商品信息

? ? ? ? ? ? function loadGoodses() {

? ? ? ? ? ? ? ? //循環(huán)商品數(shù)組

? ? ? ? ? ? ? ? goodses.forEach(g => {

? ? ? ? ? ? ? ? ? ? //每個(gè)商品信息,創(chuàng)建一個(gè)對(duì)應(yīng)的tr

? ? ? ? ? ? ? ? ? ? let tr = document.createElement('tr')

? ? ? ? ? ? ? ? ? ? // 每個(gè)tr里面有7個(gè)td

? ? ? ? ? ? ? ? ? ? let td1 = document.createElement('td')

? ? ? ? ? ? ? ? ? ? // 每一個(gè)商品對(duì)應(yīng)的那個(gè)復(fù)選框

? ? ? ? ? ? ? ? ? ? let ck = document.createElement('input')

? ? ? ? ? ? ? ? ? ? ck.type = 'checkbox'

? ? ? ? ? ? ? ? ? ? ck.className = 'ck' ? //注意:這里只是加一個(gè)標(biāo)記

? ? ? ? ? ? ? ? ? ? // 設(shè)置復(fù)選框的選中狀態(tài)

? ? ? ? ? ? ? ? ? ? ck.checked = g.isck

? ? ? ? ? ? ? ? ? ? // 注冊(cè)復(fù)選框狀態(tài)發(fā)生改變后事件

? ? ? ? ? ? ? ? ? ? ck.onchange = function(){

? ? ? ? ? ? ? ? ? ? ? ? //更新商品的狀態(tài)

? ? ? ? ? ? ? ? ? ? ? ? g.isck = ck.checked

? ? ? ? ? ? ? ? ? ? ? ? //再次調(diào)用計(jì)算總計(jì)的方法

? ? ? ? ? ? ? ? ? ? ? ? totalPrice()

? ? ? ? ? ? ? ? ? ? ? ? // 判斷是否需要更新全選復(fù)選框的狀態(tài)

? ? ? ? ? ? ? ? ? ? ? ? document.querySelector('#ckAll').checked = goodses.every(r=>r.isck)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? td1.appendChild(ck)

? ? ? ? ? ? ? ? ? ? let td2 = document.createElement('td')

? ? ? ? ? ? ? ? ? ? td2.innerHTML = g.name

? ? ? ? ? ? ? ? ? ? let td3 = document.createElement('td')

? ? ? ? ? ? ? ? ? ? let img = document.createElement('img')

? ? ? ? ? ? ? ? ? ? img.src = g.img

? ? ? ? ? ? ? ? ? ? td3.appendChild(img)

? ? ? ? ? ? ? ? ? ? // td4顯示單價(jià)

? ? ? ? ? ? ? ? ? ? let td4 = document.createElement('td')

? ? ? ? ? ? ? ? ? ? td4.innerHTML = '¥'+g.price.toFixed(2)

? ? ? ? ? ? ? ? ? ? let td5 = document.createElement('td')

? ? ? ? ? ? ? ? ? ? // 減按鈕

? ? ? ? ? ? ? ? ? ? let btn1 = document.createElement('button')

? ? ? ? ? ? ? ? ? ? btn1.innerHTML = '-'

? ? ? ? ? ? ? ? ? ? // 給減按鈕注冊(cè)點(diǎn)擊事件

? ? ? ? ? ? ? ? ? ? btn1.onclick = function(){

? ? ? ? ? ? ? ? ? ? ? ? g.count-- ? //商品數(shù)量減1

? ? ? ? ? ? ? ? ? ? ? ? // 購(gòu)買數(shù)量不能小于1

? ? ? ? ? ? ? ? ? ? ? ? if(g.count<1) g.count=1

? ? ? ? ? ? ? ? ? ? ? ? // 更新商品數(shù)量

? ? ? ? ? ? ? ? ? ? ? ? count.value = g.count

? ? ? ? ? ? ? ? ? ? ? ? // 更新商品小計(jì)

? ? ? ? ? ? ? ? ? ? ? ? td6.innerHTML = '¥'+(g.price * g.count).toFixed(2)

? ? ? ? ? ? ? ? ? ? ? ? //再次調(diào)用計(jì)算總計(jì)的方法

? ? ? ? ? ? ? ? ? ? ? ? totalPrice()

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? td5.appendChild(btn1)

? ? ? ? ? ? ? ? ? ? // 文本框

? ? ? ? ? ? ? ? ? ? let count = document.createElement('input')

? ? ? ? ? ? ? ? ? ? count.value = g.count ? //設(shè)置文本框的值

? ? ? ? ? ? ? ? ? ? td5.appendChild(count)

? ? ? ? ? ? ? ? ? ? let btn2 = document.createElement('button')

? ? ? ? ? ? ? ? ? ? btn2.innerHTML = '+'

? ? ? ? ? ? ? ? ? ? // 給加按鈕注冊(cè)點(diǎn)擊事件

? ? ? ? ? ? ? ? ? ? btn2.onclick = function(){

? ? ? ? ? ? ? ? ? ? ? ? g.count++ ? //商品數(shù)量加1

? ? ? ? ? ? ? ? ? ? ? ? //更新界面

? ? ? ? ? ? ? ? ? ? ? ? count.value = g.count

? ? ? ? ? ? ? ? ? ? ? ? td6.innerHTML = '¥'+(g.price * g.count).toFixed(2)

? ? ? ? ? ? ? ? ? ? ? ? //再次調(diào)用計(jì)算總計(jì)的方法

? ? ? ? ? ? ? ? ? ? ? ? totalPrice()

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? td5.appendChild(btn2)

? ? ? ? ? ? ? ? ? ? // td6里面顯示的是單個(gè)商品的小計(jì)

? ? ? ? ? ? ? ? ? ? let td6 = document.createElement('td')

? ? ? ? ? ? ? ? ? ? td6.innerHTML = '¥'+(g.price * g.count).toFixed(2)

? ? ? ? ? ? ? ? ? ? let td7 = document.createElement('td')

? ? ? ? ? ? ? ? ? ? let del = document.createElement('button')

? ? ? ? ? ? ? ? ? ? del.innerHTML = '刪除'

? ? ? ? ? ? ? ? ? ? // 給刪除按鈕注冊(cè)點(diǎn)擊事件

? ? ? ? ? ? ? ? ? ? td7.appendChild(del)

? ? ? ? ? ? ? ? ? ? del.onclick = function(){

? ? ? ? ? ? ? ? ? ? ? ? //刪除tr標(biāo)簽

? ? ? ? ? ? ? ? ? ? ? ? tr.remove()

? ? ? ? ? ? ? ? ? ? ? ? // 獲取當(dāng)前商品在數(shù)組中的索引

? ? ? ? ? ? ? ? ? ? ? ? let index = goodses.findIndex(r=>r.name===g.name)

? ? ? ? ? ? ? ? ? ? ? ? //刪除數(shù)組中的原始數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? ? ? goodses.splice(index,1)

? ? ? ? ? ? ? ? ? ? ? ? //再次調(diào)用計(jì)算總計(jì)的方法

? ? ? ? ? ? ? ? ? ? ? ? totalPrice()

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? td7.appendChild(del)

? ? ? ? ? ? ? ? ? ? //將所有的td添加到tr中

? ? ? ? ? ? ? ? ? ? tr.appendChild(td1)

? ? ? ? ? ? ? ? ? ? tr.appendChild(td2)

? ? ? ? ? ? ? ? ? ? tr.appendChild(td3)

? ? ? ? ? ? ? ? ? ? tr.appendChild(td4)

? ? ? ? ? ? ? ? ? ? tr.appendChild(td5)

? ? ? ? ? ? ? ? ? ? tr.appendChild(td6)

? ? ? ? ? ? ? ? ? ? tr.appendChild(td7)

? ? ? ? ? ? ? ? ? ? //將tr添加到tbody中

? ? ? ? ? ? ? ? ? ? document.querySelector('tbody').appendChild(tr)

? ? ? ? ? ? ? ? })

? ? ? ? ? ? }

? ? ? ? ? ? //調(diào)用加載商品信息的方法

? ? ? ? ? ? loadGoodses()

? ? ? ? ? ? //計(jì)算總計(jì)的方法

? ? ? ? ? ? function totalPrice(){

? ? ? ? ? ? ? ? //計(jì)算出總計(jì)

? ? ? ? ? ? ? ? let money = goodses.filter(r=>r.isck).reduce((a,b)=>a+b.count*b.price,0)

? ? ? ? ? ? ? ? //顯示總計(jì)

? ? ? ? ? ? ? ? document.querySelector('#total').innerHTML = '¥'+money.toFixed(2)

? ? ? ? ? ? }

? ? ? ? ? ? //調(diào)用計(jì)算總計(jì)的方法

? ? ? ? ? ? totalPrice()

? ? ? ? ? ? //給全選復(fù)選框注冊(cè)狀態(tài)改變后事件

? ? ? ? ? ? document.querySelector('#ckAll').onchange = function(){

? ? ? ? ? ? ? ? let cks = document.querySelectorAll('.ck')

? ? ? ? ? ? ? ? //更新DOM

? ? ? ? ? ? ? ? cks.forEach(ck=>{

? ? ? ? ? ? ? ? ? ? ck.checked = this.checked

? ? ? ? ? ? ? ? })

? ? ? ? ? ? ? ? //更新數(shù)據(jù)

? ? ? ? ? ? ? ? goodses.forEach(g=>{

? ? ? ? ? ? ? ? ? ? g.isck = this.checked

? ? ? ? ? ? ? ? })

? ? ? ? ? ? ? ? //再次調(diào)用計(jì)算總計(jì)的方法

? ? ? ? ? ? ? ? totalPrice()

? ? ? ? ? ? }

? ? ? ? </script>

? ? </table>

</body>

</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兑宇,一起剝皮案震驚了整個(gè)濱河市敬特,隨后出現(xiàn)的幾起案子蚯舱,更是在濱河造成了極大的恐慌重绷,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸵赫,死亡現(xiàn)場(chǎng)離奇詭異抵蚊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)耕赘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門骄蝇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人操骡,你說我怎么就攤上這事九火。” “怎么了册招?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵岔激,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我是掰,道長(zhǎng)虑鼎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任键痛,我火速辦了婚禮炫彩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘散休。我一直安慰自己媒楼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布戚丸。 她就那樣靜靜地躺著划址,像睡著了一般扔嵌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夺颤,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天痢缎,我揣著相機(jī)與錄音,去河邊找鬼世澜。 笑死独旷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寥裂。 我是一名探鬼主播嵌洼,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼封恰!你這毒婦竟也來了麻养?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤诺舔,失蹤者是張志新(化名)和其女友劉穎鳖昌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體低飒,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡许昨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褥赊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糕档。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崭倘,靈堂內(nèi)的尸體忽然破棺而出翼岁,到底是詐尸還是另有隱情,我是刑警寧澤司光,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布琅坡,位于F島的核電站,受9級(jí)特大地震影響残家,放射性物質(zhì)發(fā)生泄漏榆俺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一坞淮、第九天 我趴在偏房一處隱蔽的房頂上張望茴晋。 院中可真熱鬧,春花似錦回窘、人聲如沸诺擅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烁涌。三九已至苍碟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撮执,已是汗流浹背微峰。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抒钱,地道東北人蜓肆。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谋币,于是被迫代替她去往敵國(guó)和親仗扬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容