<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>仿购物车添加商品实例</title>
</head>
<body>
<ul id="list">
<li>
<input type="button" value="-">
<strong>0</strong>
<input type="button" value="+">
单价:<em>12.5元</em>
小计:<span>0元</span>
</li>
<br/>
<!-------------------------------------------------------------->
<li>
<input type="button" value="-">
<strong>0</strong>
<input type="button" value="+">
单价:<em>10.5元</em>
小计:<span>0元</span>
</li>
<br/>
<!-------------------------------------------------------------->
<li>
<input type="button" value="-">
<strong>0</strong>
<input type="button" value="+">
单价:<em>8.5元</em>
小计:<span>0元</span>
</li>
</ul>
<script type="text/javascript">
//代码重构的原则:1、尽量保证html代码结构一致,可以通过父级选区子元素
//2、把核心主程序实现,用函数包起来
//3、把每组里不同的值找出来,通过函数传参的方式实现。
window.onload = function(){
var oUl = document.getElementById("list"); //找到ul元素
var aLi = oUl.getElementsByTagName("li"); //找到ul元素下的所有li元素
//每个li就是一个主程序函数
function fn(oLi){ //给fn()传递的是一个li对象
var aBtn = oLi.getElementsByTagName('input');
var oStrong = oLi.getElementsByTagName('strong')[0];
var oEm = oLi.getElementsByTagName('em')[0];
var oSpan = oLi.getElementsByTagName('span')[0];
//需要获取份数与单价
//注意:从标签里面获取到的属性值和innerHTML都是字符串的形式
var n1 = Number(oStrong.innerHTML); //把'0'转换成0
var n2 = parseFloat(oEm.innerHTML); //把'12.5元'转换成 12.5
//点击加号按钮让份数增加
aBtn[1].onclick = function(){
n1++;
oStrong.innerHTML = n1;
oSpan.innerHTML = n1*n2+'元';
}
aBtn[0].onclick = function(){
n1--;
if(n1>=0){
oStrong.innerHTML = n1;
oSpan.innerHTML = n1*n2+'元';
}
}
}
fn(aLi[0]); //
fn(aLi[1]);
fn(aLi[2]);
}
</script>
</body>
</html>