-
我现在需要使用htnl5的拖放对图片进行拖拽,遇到了问题,求解答15
<!DOCTYPE html>
<html>
<head>
<title>审批流实现(Flex转向Html5)第一版</title>
<link rel="stylesheet" type="text/css" href="style.css">
<!--定义本html的样式-->
<style type="text/css">
</style>
<!--定义本html的js-->
<script type="text/javascript">
/* function changeTabList1(element){
var theTab=element.parentNode;
var _tabList=document.getElementById("tablist1");
var DIVs=_tabList.getElementsByTagName("DIV");
for(i=0;i<DIVs.length;i++){
DIVs[i].className="tab_normal";
}
theTab.className="tab_nonce";
}
function changeTabList2(element){
var theTab=element.parentNode;
var _tabList=document.getElementById("tablist2");
var DIVs=_tabList.getElementsByTagName("DIV");
for(i=0;i<DIVs.length;i++){
DIVs[i].className="tab_normal";
}
theTab.className="tab_nonce";
} */
<!--控制拖放的事件-->
//这个数组用来保存图像的信息
var images=[];
//对放置目标canvas_liuchengtu的引用
var imagesDropTarget;
function loadDemo(){
imagesDropTarget=document.getElementById("canvas_liuchengtu");
//放置目标注册了dragenter、dragover、dragleave和drop事件处理器
imagesDropTarget.addEventListener("dragenter",handleDragEnter,false);
imagesDropTarget.addEventListener("dragover",handleDragOver,false);
imagesDropTarget.addEventListener("dragleave",handleDragLeave,false);
imagesDropTarget.addEventListener("drop",handleDrop,false);
var table_liuchengtu=document.getElementById("table_liuchengtu");
table_liuchengtu.addEventListener("dragover",handleDragOverOuter,false);
//每个可拖动的成员都有拖动开始和结束事件处理器
var members=document.querySelectorAll("img");
[].forEach.call(members,function(member){
member.addEventListener("dragstart",handleDragStart,false);
member.addEventListener("dragend",handleDragEnd,false);
});
}
window.addEventListener("load",loadDemo,false);
//开始拖动时调用
function handleDragStart(evt){
//拖动只支持copy操作
evt.effectAllowed="copy";
//高亮潜在的放置目标
imagesDropTarget.className="validtarget";
//拖动起始目标是成员之一
//成员的数据是png图像
evt.dataTransfer.setData("image/png",evt.target.textContent);////////////////////////////////////
return true;
}
//停止传播,阻止默认的拖动动作将我们的目标列表显示为有效的放置目标
function handleDragEnter(evt){
evt.stopPropagation();
evt.preventDefault();
return false;
}
function handleDragOverOuter(evt){
if(evt.target.id=="table_liuchengtu")
imagesDropTarget.className="validtarget";
evt.stopPropagation();
evt.preventDefault();
return false;
}
function handleDragLeave(evt){
return false;
}
//如果用户鼠标悬停在canvas上
//会显示为允许复制,同时为了提供更好的反馈效果,目标列表被高亮显示
function handleDragOver(evt){
evt.dataTransfer.dropEffect="copy";
evt.stopPropagation();
evt.preventDefault();
imagesDropTarget.className="highlighted";
return false;
}
function handleDrop(evt){
evt.preventDefault();
evt.stopPropagation();
}
//确保清空所有的拖放操作
function handleDragEnd(evt){
//恢复潜在放置目标样式
imagesList.className=null;
return false;
}
</script>
</head>
<body>
<div id="main" height="500" width="800">
<div id="main_head_button" height="45" width="100%" style="border:1px solid #A3C0E8">
<input id="new" class="button_new" type="button" value="新建">
<input id="save" class="button_save" type="button" value="保存">
<input id="close" class="button_close" type="button" value="关闭">
</div>
<table id="main_body_table" width="100%" height="90%" border="0" cellspacing="0" cellpadding="0">
<tr height="100%">
<td width="40%" height="100%">
<table style="border:1px solid #00FF00">
<!--tab切换的位置-->
<tr>
<td id="tablist1" style="border:1px solid #FFFF00">
<div class="tab_nonce"><a href="#" onClick="changeTabList1(this)">流程控件</a></div>
<div class="tab_normal"><a href="#" onClick="changeTabList1(this)">人力资源</a></div>
</td>
</tr>
<!--accordiond的位置-->
<tr>
<td>
<div id="div_components">
<div id="bar_liucheng">
<label>流程监控</label>
</div>
<div id="div_image" valign="bottom" align="left">
<table id="div_image_table" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="80px" height="55px" align="center">
<span draggable="true">
<img src="image/4.png">
</span>
<div>
<label>选择</label>
</div>
</td>
<td width="80px" height="55px" align="center">
<span draggable="true">
<img src="image/2.png">
</span>
<div>
<label>连线</label>
</div>
</td>
<td width="80px" height="55px" align="center">
<span draggable="true">
<img src="image/9.png">
</span>
<div>
<label>开始</label>
</div>
</td>
</tr>
<tr>
<td width="80px" height="55px" align="center">
<span draggable="true">
<img src="image/10.png">
</span>
<div>
<label>结束</label>
</div>
</td>
<td width="80px" height="55px" align="center">
<span draggable="true">
<img src="image/7.png">
</span>
<div>
<label>异步分支</label>
</div>
</td>
<td width="80px" height="55px" align="center">
<span draggable="true">
<img src="image/7.png">
</span>
<div>
<label>同步分支</label>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
</td>
</tr>
<!--一个div和table的位置-->
<tr>
<td>
<div id="div_shuxingkuang">
<div id="bar_shuxingkuang"><label>属性对话框</label></div>
<table id="table_shuxingkuang" border="1" cellspacing="0" cellpadding="0">
<tr>
<th width="150px">名称</th>
<th width="150px">值</th>
</tr>
<tr>
<td width="150px">fdsf</td>
<td width="150px">fsdf</td>
</tr>
<tr>
<td width="150px">fdsf</td>
<td width="150px">fsdf</td>
</tr>
<tr>
<td width="150px">fsdf</td>
<td width="150px">fasdf</td>
</tr>
<tr>
<td width="150px">fsdf</td>
<td width="150px">fsad</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</td>
<td width="60%" height="100%">
<!--canvas-->
<table id="table_liuchengtu" style="border:1px solid #00FF00">
<!--tab切换的位置-->
<tr>
<td id="tablist2" style="border:1px solid #FFFF00">
<div class="tab_nonce"><a href="#" onClick="changeTabList2(this)">流程图</a></div>
<div class="tab_normal"><a href="#" onClick="changeTabList2(this)">html</a></div>
</td>
<!--accordiond的位置-->
<tr>
<td>
<div id="canvas_liuchengtu">
<!--拖动放置目标区域-->
</div>
</td>
</tr>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
问题补充:目标功能:我想把那几个png的图片拖放到下面的canvas(刚才修改成了div,发布问题时忘了改了)中,我注册了事件处理器和编写了dragstart、dragend、dragenter、dragleave、dragover、drop。
我昨天研究了一下午了,今天也弄了一上午了,还是不行,求大家帮忙看看:
1.在handleDragStart中的这句话evt.dataTransfer.setData("image/png",evt.target.textContent);中第二个参数怎么写,现在写的是处理文本的,而卧要处理图像
2.我以前看书写过处理文本的,但按照我的理解去处理图像时那个handleDrop不对,所以我把函数里面的内容删了,求您帮我看看怎么写,最好帮我写出来,我知道这样很不好,但我是真的不会了,我已经按照《html5程序设计 第二版》中的例子琢磨快一天了,求帮忙啊
2012年7月26日 11:38
目前还没有答案
相关推荐
Vue.js 是一款流行的前端JavaScript框架,它提供了丰富的...希望这个Vue.js实现拖放效果的实例对你有所帮助,如果你在实践中遇到任何问题,欢迎继续提问,我们会尽心尽力为你解答。感谢对软件开发领域的关注和支持!
VvvebJs基于Web技术,利用HTML5拖放API,允许用户通过简单的拖放操作将各种网页元素(如文本、图片、按钮等)放置到页面上。这些元素的样式和位置可以通过直观的界面进行调整,极大地提高了网页设计的效率。此外,...
1. **使用须知.txt**:这通常是一个文本文件,包含了关于如何使用该软件的详细说明和注意事项,包括安装步骤、系统需求、许可证信息以及可能遇到的问题解答等。用户在开始使用前应仔细阅读此文件,确保正确、安全地...
- 如果遇到问题,可以通过提供的QQ群与其他开发者交流,获取支持和解答。 在实际应用中,这种功能常用于权限分配、角色管理或组织架构调整等场景。例如,在一个企业管理系统中,员工可以被分配到不同的部门或小组...
针对使用过程中可能遇到的问题,文档提供了一份常见问题解答列表,帮助用户解决疑问。 #### 十四、用户反馈 为了进一步改进产品,MyEclipse鼓励用户提供反馈,特别是关于文档的准确性和实用性方面的建议。 综上所...
如果你有具体的代码片段或遇到问题,可以进一步提供详细信息,以便我能提供更具体的指导和解答。 在实际应用中,还可以考虑优化和扩展,比如加入防抖动(debouncing)处理以提高性能,或者实现拖放元素的吸附效果,...
在使用过程中,"说明_Readme.html"文件提供了详细的使用指南和常见问题解答,用户可以通过阅读这份文件来更好地理解和操作软件。它可能包括如何安装、如何创建加密文件夹、如何设置和管理密码,以及遇到问题时的解决...
在实际项目中,开发者可能会遇到如何集成、配置、自定义样式以及与其他前端框架(如React、Vue、Angular)配合使用的各种问题,而这篇博客可能对此提供了解答。 标签“源码”意味着可能包含了dhtmlx Scheduler的源...
此外,文档可能还包括常见问题解答(FAQ)和故障排除指南,以解决在实际使用过程中遇到的问题。 总而言之,对于在Unity3D中进行UI开发的人员来说,掌握EZGUI插件的使用是非常有价值的。通过深入研究“EZGUI帮助文档...
遇到问题时,可以参考 jQuery UI 文档、在线社区(如 Stack Overflow)或者官方论坛寻求解答。社区中积累了大量已解决的问题,通常能为开发者提供有效解决方案。 综上所述,jQuery UI 中文帮助文档是学习和使用该库...
5. **常见问题解答(FAQ)**:解答在使用JSPlumb过程中可能遇到的问题和挑战。 6. **最佳实践**:指导如何优化性能,避免潜在问题,以及如何与其他前端框架(如React、Vue、Angular等)集成。 通过这个中文教程,...
3. **社区支持**:jQuery 社区活跃,有大量教程、插件和问题解答,遇到问题时能得到及时的帮助。 四、应用场景 jQuery UI 1.8.6 广泛应用于各种类型的网站和应用,包括电子商务、内容管理系统、在线预订系统、数据...
这份文档包含了详细的API介绍、示例代码以及常见问题解答,对于初学者和有经验的开发者都是宝贵的资源。 **四、示例项目** 示例项目通常包括多个示例页面,演示了jsPlumb的各种功能和应用场景,如静态连接、动态...
标签"源码"表明这个库提供源代码,开发者可以深入理解其内部工作原理,甚至对其进行定制化修改以满足特定需求。"工具"标签则暗示js-tree是一个辅助开发的工具,帮助开发者快速实现树形结构的功能。 压缩包子文件的...
jqGrid拥有活跃的开发者社区,提供丰富的文档、示例和问题解答,帮助开发者解决在使用过程中遇到的问题。 总之,jqGrid 5.3.1是一个强大且功能丰富的表格插件,无论是在基本的数据展示还是在复杂的树形数据处理上...
同时,文档还可能包含示例代码和常见问题解答,帮助开发者解决开发过程中遇到的问题。 总之,Eclipse GEF和Draw2D是Eclipse生态中强大的图形编辑工具,结合RCP,可以创建出专业级的图形化应用程序。通过深入研究...
Balsamiq提供了丰富的在线教程和资源,帮助用户快速掌握软件使用技巧,同时,强大的社区支持使得用户在遇到问题时能得到及时解答。 通过深入了解和实践Balsamiq Mockups 3.5.17,设计师可以快速制作出富有表现力的...
3. 分组与汇总:通过分组功能,可以对数据进行分类展示;汇总则用于计算各类别或全表的总计、平均值等统计指标。 四、图表与图形 1. 图表选择:水晶报表提供了柱状图、折线图、饼图等多种图表类型,便于直观展示...
4. **拖放功能**:描述中提到的“简单的拖动即可使用”意味着控件库可能包含可视化的控件,开发者可以通过拖放到设计界面上快速添加邮件发送或接收功能,极大地提高了开发效率。 5. **邮件模板**:一些库可能包含...