html物品添加,HTML5实现拖拽功能步骤详解-  问题:突然奇想,想在电影网上加一个收藏(类似于购物车的东西),可以通过拖拽图片进行添加   前提:需要了解HTML5中国LoaclStrorag...

问题:突然奇想,想在电影网上加一个收藏(类似于购物车的东西),可以通过拖拽图片进行添加

前提:需要了解HTML5中国LoaclStrorage(当然,其他的web存储也行,我用的是LocalStroage)

解决:这里主要重点强调关于进行拖拽功能的细节,具体html和css就自己慢慢弄吧

首先这里先是对收藏按钮进行点击显示新的p框(存放收藏的电影),二次点击隐藏p框,这里不做过多介绍

为可以进行拖拽的图片进行设置属性:draggable属性和ondragstart事件

varpic_list=document.getElementsByClassName("middle_content")[0];

varpic_list_li=pic_list.getElementsByTagName("li");

for(vari=0;i

varimage=pic_list_li[i].getElementsByTagName("img")[0];

image.setAttribute("draggable",true);

image.οndragstart=drag;

我这里的代码就是获取所选要拖拽图片的父元素,然后进行遍历,将每一个img都设置属性和事件

3.分别编写进行拖拽时的函数和拖拽完成的函数

//设置拖拽效果

functiondrag(e){

e=e||event;

e.dataTransfer.effectAllowed="copy";

//IE需通过服务器访问方式,FF、chrome支持本地方式进行访问

e.dataTransfer.setData("text",e.target.src);//IE兼容写法

//e.dataTransfer.setData("text/plain",e.target.src);//标准写法

}

“copy”那就是字面意思,复制一份当然的data,当然还有其他的属性值,这里就不做进一步解释

//拖拽释放效果

functiondrop(e){

//方式拖拽事件传播

allowDrop(e);

//从拖拽事件中获取数据

vardata=e.dataTransfer.getData("text");

//e.target.id=="dropdown",表示目标对象是p(dropdown)

//e.target.parentNode.id=="dropdown"表示目标对象是dropdown的直接子元素UL

//e.target.parentNode.parentNode.id=="dropdown"表示目标对象是UL中的LI

//e.target.parentNode.parentNode.parentNode.id=="dropdown"表示目标对是元素

//e.target.parentNode.parentNode.parentNode.parentNode.id=="dropdown"表示目标对象是元素

if(e.target.id=="dropdown"||e.target.parentNode.id=="dropdown"

||e.target.parentNode.parentNode.id=="dropdown"

||e.target.parentNode.parentNode.parentNode.id=="dropdown"

||e.target.parentNode.parentNode.parentNode

.parentNode.id=="dropdown"){

//从localStorage中尝试根据Src读取数据

varnewFilms=readFromStorage(data);

if(newFilms==null){

films.filmsSrc=data;

}

//把处理后的商品信息存储到localStorage

localStorage.setItem(data,JSON.stringify(films));

//重新加载并刷新页面中的collect

document.getElementsByClassName("dropdown")[0].innerHTML=loadCollect();

}

}

4.上述代码中有关于key值读取localstrorage的值,我将其封装成了json对象,因为后期可能数据会增多,比如,不仅仅是加入图片的src,还有可能是有关图片的介绍,例如,导演,演员,简介之类的信息,这时,用json对象会相对于更好一些

所有需要将读取的localstroage值封装成json对象

//根据key读取localStorage的值并封装成JSON

functionreadFromStorage(key){

varjsonStr=localStorage.getItem(key);

varnewFilms=JSON.parse(jsonStr);

returnnewFilms;

}

5。其实在这里,这个拖拽的功能就相当于是实现了

u=1510886367,3208044294&fm=72

c12fab12a2cce7bbb4a7405e64c1343a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值