js購物車的實現(xiàn)方法

第一步有數(shù)據(jù)

var date = [{
        img: '1.png',
        text: '贏(尊享版) 杰克 韋爾奇 著 管理巨匠經(jīng)典作品 中信出版社圖書 正版書籍',
        price: 36,
        num: 1,
        sum: 36,
        isChecked: true
    },
    {
        img: '2.png',
        text: '小牛(XIAONIU) 小牛電動車US新國標(biāo)版 都市版智能鋰電電動踏板車 電瓶車 電動代步 白色 都市安全版',
        price: 3748,
        num: 1,
        sum: 3748,
        isChecked: false
    },
    {
        img: '3.png',
        text: '尾巴先生 寵物貓咪飯食盆不銹鋼斜面原木托高泰迪柯基法斗狗狗碗 M-一般',
        price: 98,
        num: 1,
        sum: 98,
        isChecked: false
    },
    {
        img: '4.png',
        text: '小佩PETKIT寵物智能稱重貓碗狗盆狗碗貓碗狗狗碗食盆貓咪碗食',
        price: 99,
        num: 1,
        sum: 99,
        isChecked: false
    }
]

第二步渲染數(shù)據(jù)

var main = document.querySelector('.main')

function gethtml() {//渲染數(shù)據(jù)
    var aa = '';
    for (var i in date) {
        aa += `<ol>
        <li><input type="checkbox" name="" id=""${date[i].isChecked?'checked':''}>
            <img src="./imgs/${date[i].img}" alt="">
        </li>
        <li>${date[i].text}</li>
        <li>${date[i].price}</li>
        <li>
        <button id="jian">-</button>
        <input type="text" name="" id="" value="${date[i].num}">
        <button id="jia">+</button>
        </li>
        <li id="sum">${date[i].sum}</li>
        <li id='shanchu'>刪除</li>
    </ol>
        `
    }
    main.innerHTML = aa;
    getevent(date)
}
gethtml();

第三步封裝

function getevent(date) {
    var jia = document.querySelectorAll('#jia')
    var jian = document.querySelectorAll('#jian')
    var text = document.querySelectorAll('ol li input[type=text]')
    var sum = document.querySelectorAll('#sum')
    var all = document.querySelector('#all')
    var every_check = document.querySelectorAll('ol li input[type=checkbox]')
    var zong_jia=document.querySelector('#zong_jia')
    var zong_shu=document.querySelector('#zong_shu')
    var shanchu=document.querySelectorAll('#shanchu')
    var zong_num=0,zong_sum=0;

第四步點擊加

//點擊加
    for (var i = 0; i < jia.length; i++) {//加號框循環(huán)它的每一項
        jia[i].ind = i;//定位置
        jia[i].onclick = function () {//點擊加事件
            date[this.ind].num++;//讓數(shù)據(jù)中的這個數(shù)加加
            text[this.ind].value = date[this.ind].num//讓文本框的value值等于加的數(shù)
            sum[this.ind].innerHTML = date[this.ind].num * date[this.ind].price//求總和讓這個數(shù)乘以價錢
            getjiesuan()//調(diào)用函數(shù)
        }
    }

第四步點擊減

for (var i = 0; i < jian.length; i++) {//減號框循環(huán)它的每一項
        jian[i].ind = i;//定位置
        jian[i].onclick = function () {//點擊加事件
            if (date[this.ind].num > 1) {//判斷這個數(shù)如果這個數(shù)大于1的話就可以減減
                date[this.ind].num--;
                text[this.ind].value = date[this.ind].num//讓文本框的value值等于加的數(shù)
                sum[this.ind].innerHTML = date[this.ind].num * date[this.ind].price//求總和讓這個數(shù)乘以價錢
                getjiesuan()//調(diào)用函數(shù)
            }
        }
    }

第五步全選

all.onclick = function () {//全選點擊事件
        var boll = all.checked;//聲明一個名字等于全選的選中狀態(tài)
        for (var i = 0; i < every_check.length; i++) {//循環(huán)ol里選框的每一項
            every_check[i].checked = boll;//讓他里面的每一項的選中狀態(tài)與全選狀態(tài)同步
            date[i].isChecked = boll;//跟數(shù)據(jù)里的也同步
        }
        getjiesuan()//調(diào)用函數(shù)
    }

第五步單選

for (var i = 0; i < every_check.length; i++) {////循環(huán)ol里選框的每一項
        every_check[i].ind = i;//定位置
        every_check[i].onclick = function () {//點擊事件
            date[this.ind].isChecked = !date[this.ind].isChecked//取反
            var str = date.every(function (item) {//用every方法看他們的每一項是選中狀態(tài)
                return item.isChecked
            })
            all.checked = str;//全選的選中狀態(tài)跟它同步
            getjiesuan()//調(diào)用函數(shù)
        }
    }

第六步結(jié)算

    function getjiesuan(){//封裝結(jié)算
        zong_num=0,zong_sum=0;//上面已經(jīng)聲明的
        for(var i in date){//循環(huán)數(shù)據(jù)的每一項
           if(date[i].isChecked){//判斷他們是否是選中狀態(tài)
            zong_num++;//數(shù)量加加
            zong_sum+= text[i].value  * date[i].price//總加加等于
           } 
        }
        zong_shu.innerHTML= zong_num//總數(shù)量寫入頁面
        zong_jia.innerHTML= zong_sum//總價錢寫入頁面
    }
    getjiesuan();

第七步點擊刪除

for(var i=0;i<shanchu.length;i++){//循環(huán)刪除的每一項
        shanchu[i].ind=i//定位置
        shanchu[i].onclick=function(){//點擊事件
            date.splice(this.ind,1);//刪除數(shù)據(jù)的這一項浙巫,刪除一個
            gethtml();//調(diào)用渲染
        }
       

    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子算灸,更是在濱河造成了極大的恐慌拒贱,老刑警劉巖箭启,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秉剑,死亡現(xiàn)場離奇詭異澜汤,居然都是意外死亡炎滞,警方通過查閱死者的電腦和手機敢艰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來册赛,“玉大人钠导,你說我怎么就攤上這事∩瘢” “怎么了牡属?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扼睬。 經(jīng)常有香客問我逮栅,道長,這世上最難降的妖魔是什么窗宇? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任措伐,我火速辦了婚禮,結(jié)果婚禮上担映,老公的妹妹穿的比我還像新娘废士。我一直安慰自己,他們只是感情好蝇完,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布官硝。 她就那樣靜靜地躺著,像睡著了一般短蜕。 火紅的嫁衣襯著肌膚如雪氢架。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天朋魔,我揣著相機與錄音岖研,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛孙援,可吹牛的內(nèi)容都是我干的害淤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼拓售,長吁一口氣:“原來是場噩夢啊……” “哼窥摄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起础淤,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤崭放,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸽凶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體币砂,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年玻侥,在試婚紗的時候發(fā)現(xiàn)自己被綠了决摧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡使碾,死狀恐怖蜜徽,靈堂內(nèi)的尸體忽然破棺而出祝懂,到底是詐尸還是另有隱情票摇,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布砚蓬,位于F島的核電站矢门,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏灰蛙。R本人自食惡果不足惜祟剔,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摩梧。 院中可真熱鬧物延,春花似錦、人聲如沸仅父。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笙纤。三九已至耗溜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間省容,已是汗流浹背抖拴。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腥椒,地道東北人阿宅。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓候衍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洒放。 傳聞我的和親對象是個殘疾皇子脱柱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • 在我們寫購物車的時候一定要捋清思路,在寫之前一定要把自己的HTML的結(jié)構(gòu)搞清楚拉馋;下面是我自己寫的購物車:我在HTM...
    李楊_web閱讀 216評論 0 3
  • 1.搭建前臺系統(tǒng) 1.1.前臺系統(tǒng)架構(gòu) 在互聯(lián)網(wǎng)系統(tǒng)開發(fā)當(dāng)中榨为,我們一般都是采用了分層的方式來架構(gòu)系統(tǒng),即: (1)...
    唯死撐爾閱讀 1,526評論 0 2
  • 今天我要推薦的歌曲來自于TFboys的《樣》煌茴,可以說是一首聽了就會上癮的歌曲随闺,暖心治愈中滿滿的正能量,講述了...
    冰海玫瑰閱讀 327評論 0 0
  • 有人說蔓腐,春天是一幅畫矩乐,有快樂的小鳥,飄逸的楊柳回论,優(yōu)雅的桃花......但對于北方人來說散罕,春天卻又是個矛盾的季...
    載馳閱讀 216評論 0 0