今天来到了妙味课堂的html5课程的第2张的第8节,讲的是把商品拖拽到购物车的演示。其中有一个关于appendChild的使用,,每次拖拽都会触发这个方法,但是每次之后,却还是只有一个总价,好吧,说不清楚,一起来看程序:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>拖拽购物车</title>
<style>
*{ margin:0;padding:0;}
li{ list-style: none;}
li{ float: left;width: 200px;border:1px #000 solid;margin:10px; }
li img{ width:250px; height: 300px;}
li p,
#div1 p{ border-bottom: 1px dashed #000;} #div1 { width:900px;height:400px;border:1px #000 solid; clear:both;}
#div1 .box1{ width:left;width:200px;}
#div1 .box2{ width:left;width:200px;}
#div1 .box3{ width:left;width:200px;}
#div1 span{ margin-left:30px;} #allMoney{float:right; font-size:28px;} </style>
</head>
<body>
<ul>
<li draggable="true">
<img src="http://2a.zol-img.com.cn/article/11_120x90/742/liyoKyAnvblM.jpg" alt="">
<p>zol商品1</p>
<p>32.5</p>
</li>
<li draggable="true">
<img src="http://2a.zol-img.com.cn/article/11_120x90/742/liyoKyAnvblM.jpg" alt="">
<p>zol商品2</p>
<p>32.5</p>
</li>
<li draggable="true">
<img src="http://2a.zol-img.com.cn/article/11_120x90/742/liyoKyAnvblM.jpg" alt="">
<p>zol商品3</p>
<p>32.5</p>
</li>
</ul>
<div id="div1">
<!--<p>
<span class="box1">1</span>
<span class="box2">商品1</span>
<span class="box3">45</span>
</p>
<p>
<span class="box1">2</span>
<span class="box2">商品2</span>
<span class="box3">45</span>
</p>
<p>
<span class="box1">3</span>
<span class="box2">商品3</span>
<span class="box3">45</span>
</p>
<div id="allMoney">90元</div>
-->
</div> <script>
window.onload = function(){
var aLi = document.getElementsByTagName('li');
var obj = {};
var allMoney = null;
var sum = 0;
oDiv = document.getElementById('div1');
for(var i=0,max=aLi.length;i<max;i++){
aLi[i].ondragstart = function(ev){
var aP = this.getElementsByTagName('p');
//alert(aP.length);
ev.dataTransfer.setData('title',aP[0].innerHTML);
ev.dataTransfer.setData('money',aP[1].innerHTML);
ev.dataTransfer.setDragImage(this,0,0);
//ev.preventDefault();//阻止默认事件
};
}
oDiv.ondragover = function(ev){
ev.preventDefault();//阻止默认事件
};
oDiv.ondrop = function(ev){
ev.preventDefault();//阻止默认事件
var title = ev.dataTransfer.getData('title');
var money = ev.dataTransfer.getData('money');
if(!obj[title]){
var oP = document.createElement('p');
var oSpan = document.createElement('span');
oSpan.className = 'box1';
oSpan.innerHTML = 1;
oP.appendChild(oSpan);
var oSpan = document.createElement('span');
oSpan.className = 'box2';
oSpan.innerHTML = title;
oP.appendChild(oSpan);
var oSpan = document.createElement('span');
oSpan.className = 'box3';
oSpan.innerHTML = money;
oP.appendChild(oSpan); oDiv.appendChild(oP); obj[title] = true; }else{
var box1 = document.getElementsByClassName('box1');
var box2 = document.getElementsByClassName('box2');
for(var i=0,max = box2.length;i<max;i++){
if(box2[i].innerHTML == title){
box1[i].innerHTML = parseInt(box1[i].innerHTML)+1;
}
}
}
if(!allMoney){
allMoney = document.createElement('div');
allMoney.id = 'allMoney';
}
sum += Number(money);
allMoney.innerHTML = sum+'元';
oDiv.appendChild(allMoney);//apendChild的剪切功能 }; }; </script>
</body>
</html>
05-26 20:36