HTML代碼
<html lang="en"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="css/style.css" /> <script type="text/javascript" src="js/script.js" ></script> </head> <body> <th id="header"><h1>歡迎來到此網站,請盡情購物吧</h1></th> <tr id="head"> <th width="100px">商品</th> <th width="200px">商品描述</th> <th width="200px">單價</th> <th width="200px">規格</th> <th width="200px">操作</th> </tr> <tr> <td class="goods"></td> <td class="describe">【12期免息】Huawei/華為Mate 30 Pro 5G麒麟990徠卡四攝5G芯片智能手機mate30pro5g官方旗艦店</td> <td class="price">7899.00</td> <td> <option value="4GB+64GB">4GB+64GB</option> <option value="8GB+64GB">8GB+64GB</option> <option value="4GB+128GB">4GB+128GB</option> <option value="8GB+128GB">8GB+128GB</option> </select> </td> <td class="total"> 加入購物車 </td> </tr> <tr> <td class="goods"></td> <td class="describe">保時捷Panamera S 威利原廠1:18 帕拉梅拉四門合金仿真汽車模型藍</td> <td class="price">299.00</td> <td> <select class="select"> <option value="藍色 Panamera藍色">藍色 Panamera藍色</option> <option value="911 GT-3 白色">911 GT-3 白色</option> <option value="黑色 Cayenne黑色">黑色 Cayenne黑色</option> </select> </td> <td class="total"> 加入購物車 </td> </tr> <tr> <td class="goods"></td> <td class="describe">海賊海賊王 超大王拼圖1000片木質成年路飛卡通包郵</td> <td class="price">49.99</td> <td> <option value="海賊王全家福">海賊王全家福</option> <option value="兩年后9人集結">兩年后9人集結</option> <option value="少年初長成">少年初長成</option> </select> </td> <td class="total"> 加入購物車 </td> </tr> <tr> <td class="goods"></td> <td class="describe">ThinkPad E490 2UCD/2XCD英特爾酷睿i5 14英寸聯想筆記本電腦商務辦公輕薄便攜官方旗艦店2019款筆記本</td> <td class="price">7899.00</td> <td> <option value="2XCD:i5/8G/128GB+1TB/2G獨顯">2XCD:i5/8G/128GB+1TB/2G獨顯</option> <option value="2UCD:i5/8G/ 256GB/ 2G獨顯">2UCD:i5/8G/ 256GB/ 2G獨顯</option> </select> </td> <td class="total"> 加入購物車 </td> </tr> </table> <th id="header"><h1>已加入購物車的寶貝</h1></th> <thead id="head"> <th width="100px">商品</th> <th width="200px">商品描述</th> <th width="100px">單價</th> <th width="200px">規格</th> <th width="100px">數量</th> <th width="100px">金額</th> <th width="100px">刪除</th> </thead> <tbody id="goods"></tbody> <tfoot> <td colspan="5" align="center">總計</td> <td id="total"></td> <td>元</td> </tfoot> </table> </div> </body> </html>
JS代碼
//增加購物車列表中的行 function addr(button){ //從商品列表中獲取元素 var tr = button.parentNode.parentNode; var td = tr.getElementsByTagName("td"); var goods = td[0].innerHTML; var des = td[1].innerHTML; var price = td[2].innerHTML; var sele = td[3].innerHTML; //使用insertRow()函數增加行 var tbody=document.getElementById("goods"); var row=tbody.insertRow(); //將獲取的對應的元素放入新增加的行中 row.innerHTML = "<td>"+goods+"</td>"+ "<td>"+des+"</td>"+ "<td>"+price+"</td>"+ "<td>"+sele+"</td>"+ "<td align='center'>"+ "<input type='button' value=' - ' id='jian' onclick=jian(this)>"+ "<input id='text' type='text' size='1' value='1' />"+ "<input type='button' value=' + ' id='add' onclick=add(this)>"+"</td>"+ "<td>"+price+"</td>"+ "<td align='center'>"+ "<input type='button' value='刪除' class='add1' onclick=dele(this)>"+ "</td>" //計算總價函數 total(); } //刪除函數 function dele(dele){ dele.parentNode.parentNode.remove(); total(); } //數量減少函數 function jian(jian){ //獲取jian父節點的所有input標簽 var inputs = jian.parentNode.getElementsByTagName("input"); //取出放在第二列的數量 amount = inputs[1].value; //轉換為整型 var amount1 = parseInt(amount); //最小數量為1 if(amount1 == 1){ return; } inputs[1].value=amount1-1; //根據數量的變化,計算出當前數量對應的金額 var tr = jian.parentNode.parentNode; var tds = tr.getElementsByTagName("td"); var price = parseFloat(tds[2].innerHTML); var sum = price*amount1; tds[5].innerHTML=sum-price; total(); } function add(add){ var inputs = add.parentNode.getElementsByTagName("input"); amount = inputs[1].value; var amount1 = parseInt(amount); inputs[1].value=amount1+1; var tr = add.parentNode.parentNode; var tds = tr.getElementsByTagName("td"); var price = parseFloat(tds[2].innerHTML); var sum = price*amount1; tds[5].innerHTML=sum+price; total(); } //計算總價函數 function total() { var tbody = document.getElementById("goods"); //取出tbody中所有tr標簽 var trs = tbody.getElementsByTagName("tr"); var sum = 0; //遍歷trs數組,並計算每一個tr標簽中金額的總和 for(var i = 0; i < trs.length; i++) { var tds = trs[i].getElementsByTagName("td"); var m = tds[5].innerHTML; sum += parseFloat(m); } var total = document.getElementById("total"); total.innerHTML = sum; } function prepareGallery() { if (!document.getElementsByTagName) return false; if (!document.getElementById) return false; if (!document.getElementById("shopping")) return false; var gallery = document.getElementById("shopping"); var links = gallery.getElementsByTagName("button"); for ( var i=0; i < links.length; i++) { links[i].onclick = function() { return addr(this); } } } function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } addLoadEvent(prepareGallery);
CSS樣式表
* { margin: 0px; padding: 0px; } body{ text-align: center; } table, td, td { border: 1px solid #000000; font-size: 10px; } table { display: block; } img { float: left; } tr { text-align: center; } #box { width: 900px; height: 1500px; border: 1px solid white; margin-top: 20px; margin-left: 300px; } #shopping { float: left; text-align: center; border-collapse: collapse; } #head { height: 20px; background: #F0FFFF; } #header{ color: gold; letter-spacing: 0; text-shadow: 0px 1px 0px #999, 0px 2px 0px #888, 0px 3px 0px #777, 0px 4px 0px #666, 0px 5px 0px #555, 0px 6px 0px #444, 0px 7px 0px #333, 0px 8px 7px #001135 } } .add{ height: 30px; text-align: center; width: 100px; border-radius: 5px; cursor: pointer; } .add:hover{ -webkit-border-radius: 25px; -moz-border-radius: 25px; border-radius: 25px; } .add1{ height: 30px; text-align: center; width: 50px; border-radius: 5px; cursor: pointer; } .add1:hover{ -webkit-border-radius: 25px; -moz-border-radius: 25px; border-radius: 25px; } .select{ cursor: pointer; } .photos{ height: 100px; width: 100px; } .describe{ padding: 5px; text-align: left; } .goods { padding: 5px; text-align: left; } .total { color: #ff0000; font-weight: 700; }
運行后的樣式如下圖
