html5 拖放购物车
1.本例中模仿了购物车添加的功能
主要运用了ondragstart / ondragover/ ondrag 功能
功能比较简单
遗留问题:火狐下图片拖进会被打开
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> body,ul,img,p{margin:0;padding:0;} li{list-style:none;} li{float:left;width:200px;margin:10px;border:1px solid #000;height:300px;} li img{width:200px;height:250px;} p{height:20px;border-bottom:1px dashed #666;} #div1{clear:both;width:600px;height:400px;border:1px solid #000;margin:20px;} .box1{float:left;width:200px;} .box2{float:left;width:200px;} .box3{float:left;width:200px;} #allMoney{float:right;} </style> <script> window.onload = function(){ var aLi = document.getElementsByTagName('li'); var oDiv = document.getElementById('div1'); var obj = {}; var oMoney = null; var iNum = 0; for(var i=0;i<aLi.length;i++){ aLi[i].ondragstart = function(ev){ var ev = ev || window.event; var aP = this.getElementsByTagName('p'); ev.dataTransfer.setData('title',aP[0].innerHTML); ev.dataTransfer.setData('money',aP[1].innerHTML); ev.dataTransfer.setDragImage(this,0,0); }; } oDiv.ondragover = function(ev){ var ev = ev || window.event; ev.preventDefault(); //如果想要实现drop功能 必须组织默认事件 }; oDiv.ondrop = function(ev){ var ev = ev || window.event; ev.preventDefault(); // 阻止图片进来打开 var sTitle = ev.dataTransfer.getData('title'); var sMoney = ev.dataTransfer.getData('money'); if(!obj[sTitle]){ 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 = sTitle; oP.appendChild(oSpan); var oSpan = document.createElement('span'); oSpan.className = 'box3'; oSpan.innerHTML = sMoney; oP.appendChild(oSpan); oDiv.appendChild(oP); obj[sTitle] = 1; }else{ var arrBox1 = document.getElementsByClassName('box1'); var arrBox2 = document.getElementsByClassName('box2'); for(var i=0;i<arrBox1.length;i++){ if(arrBox2[i].innerHTML == sTitle){ arrBox1[i].innerHTML = parseInt(arrBox1[i].innerHTML)+1; break; } } } if(!oMoney){ oMoney = document.createElement('div'); oMoney.id = 'allMoney'; } iNum += parseInt(sMoney); oMoney.innerHTML = iNum +'¥'; oDiv.appendChild(oMoney); }; }; </script> </head> <body> <ul> <li draggable="true"> <img src="image/img1.jpg"/> <p>javascript语言精粹</p> <p>40¥</p> </li> <li draggable="true"> <img src="image/img2.jpg"/> <p>javascript权威指南</p> <p>120¥</p> </li> <li draggable="true"> <img src="image/img3.jpg"/> <p>精通javascript</p> <p>50¥</p> </li> <li draggable="true"> <img src="image/img4.jpg"/> <p>DOM编程艺术</p> <p>70¥</p> </li> </ul> <div id="div1"> <!-- <p> <span class="box1">1</span> <span class="box2">DOM编程艺术</span> <span class="box3">45¥</span> </p> <p> <span class="box1">1</span> <span class="box2">DOM编程艺术</span> <span class="box3">45¥</span> </p> <p> <span class="box1">1</span> <span class="box2">DOM编程艺术</span> <span class="box3">45¥</span> </p> <div id="allMoney">90¥</div>--> </div> </body> </html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)