注
onmouseover是鼠标悬停事件
onmouseout是鼠标离开事件
onchange:值改变时触发事件
document(window对象中一个重要的对象)
DOM节点树
简单购物车
<!DOCTYPE html>
<html>
<head>
<title>购物车</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> //加入购物车 //调用此函数时传入了this(按钮对象即DOM节点) //arguments[0]->this或者是声明参数来接收this的值 //注意:参数名不能是关键字this function add_shoppingcart(btn){ //利用父子关系导航到tr节点 var tr=btn.parentNode.parentNode; //找到tr节点中的全部td子元素 var tds=tr.getElementsByTagName("td"); //tds=tr.children;->此方法只有最新的浏览器支持 //获取商品名及价格 var name=tds[0].innerHTML; var price=parseFloat(tds[1].innerHTML); //为购物车创建新的商品行 var newTr=document.createElement("tr"); newTr.innerHTML="<td>"+name+"</td>"+"<td>"+price+"</td>"+ "<td align='center'>"+ "<input type='button' value='-' onclick='cut(this);'/> "+ "<input type='text' size='2' readonly value='1'/> "+ "<input type='button' value='+' onclick='add(this);'/> "+ "</td>"+"<td>80</td>"+ "<td align='center'>"+ "<input type='button' value='x' onclick='del(this);'/>" "</td>"; //找到tbody节点 var tbody=document.getElementById("goods"); //追加元素 tbody.appendChild(newTr); //计算并且更新购物车全部商品的金额和总计 sum(); } /* *声明一个计算总计的算法 */ function sum(){ //计算每件商品的总金额,更新金额列 var tbody=document.getElementById("goods") //获取所有行 var trs=tbody.getElementsByTagName("tr"); var sum=0; //遍历每一行 for(var i=0;i<trs.length;i++){ //获取所有列 var tr=trs[i]; var tds=tr.getElementsByTagName("td"); //获取单价 var price=parseFloat(tds[1].innerHTML); //获取数量 var qty=parseFloat(tds[2].getElementsByTagName("input")[1].value); //计算每件商品总金额 n=price*qty; sum+=n; tds[3].innerHTML=n; } //计算所有商品的总计,更新总计列 var total=document.getElementById("total"); total.innerHTML=sum; } /* *删除按钮的方法 */ function del(btn){ var tr=btn.parentNode.parentNode; //console.log(tr); var tbody=tr.parentNode; //console.log(tbody); tbody.removeChild(tr); sum(); } /* *+号按钮的方法 */ function add(btn){ //找到td及其所有的孩子 var td=btn.parentNode; var inputs=td.getElementsByTagName("input"); //获取数量 var qty=parseInt(inputs[1].value); //给数量+1 qty++; //写入新数量 inputs[1].value=qty; //重新计算 sum(); } /* *-号按钮的方法 */ function cut(btn){ var td=btn.parentNode; var inputs=td.getElementsByTagName("input"); var qty=parseInt(inputs[1].value); qty--; if(qty<=0){return;} inputs[1].value=qty; sum(); } </script>
</head>
<body>
<h1>真划算</h1>
<table>
<tr>
<th>商品</th>
<th>单价(元)</th>
<th>颜色</th>
<th>库存</th>
<th>好评率</th>
<th>操作</th>
</tr>
<tr>
<td>罗技M185鼠标</td>
<td>80</td>
<td>黑色</td>
<td>893</td>
<td>98%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
<tr>
<td>微软X470键盘</td>
<td>150</td>
<td>黑色</td>
<td>9028</td>
<td>96%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
<tr>
<td>洛克iphone6手机壳</td>
<td>60</td>
<td>透明</td>
<td>672</td>
<td>99%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
<tr>
<td>蓝牙耳机</td>
<td>100</td>
<td>蓝色</td>
<td>8937</td>
<td>95%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
<tr>
<td>金士顿U盘</td>
<td>70</td>
<td>红色</td>
<td>482</td>
<td>100%</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">
<!-- 插入新tr元素 -->
</tbody>
<tfoot>
<tr>
<td colspan="3" align="right">总计</td>
<td id="total"></td>
<td></td>
</tr>
</tfoot>
</table>
</body>
</html>