- 浏览: 26607 次
- 性别:
- 来自: 北京
-
<html> <head> <title>drag example</title> <style> *{ margin:0; padding:0; } body{ text-align:center; } .mil{ text-align:center; line-height:96px; } </style> </head> <body> <div id="main" style="position:relative;margin:0 auto;width:500px;height:500px;border:1px solid red;"> </div> </body> </html> <script type="text/javascript"> function $(id){return document.getElementById(id);} var row = 4; var col = 4; var width = 96; var height = 96; var isIE = false; var isFF = false; var arr = []; var tmp_from = []; var tmp_to = []; function DragClass(id,x,y){ //drag class this.id = id; this.posX = x; this.posY = y; this.type = 0; //1:col 2:row 3:table 4:head this.obj = null; this.color = null; this.px = null; this.py = null; } DragClass.prototype.init = function(){ if(this.type == 1){ this.color = "blue"; this.obj.style.background = this.color; this.obj.style.color = "yellow"; this.start(); } else if(this.type == 2){ this.color = "green"; this.obj.style.background = this.color; this.obj.style.color = "yellow"; this.start(); } else if(this.type == 3){ this.color = "red"; this.obj.style.background = "red"; this.obj.style.color = "yellow"; this.start(); } else{ this.color = "black"; this.obj.style.background = this.color; this.obj.innerHTML = "固定表头"; this.obj.style.color = 'white'; } }; DragClass.prototype.start = function(){ var self = this; this.obj.onmousedown = function(e){ e = e || window.event; if(self.type == 3){ self.px = get_xy(e)[0]-self.posX; self.py = get_xy(e)[1]-self.posY; self.changeStyle(); } else if(self.type == 1){ tmp_from = get_tmp(1,self.id.split('_')[1]); for(var i in tmp_from){ tmp_from[i].px = get_xy(e)[0]-tmp_from[i].posX; tmp_from[i].py = get_xy(e)[1]-tmp_from[i].posY; tmp_from[i].changeStyle(); } } else if(self.type == 2){ tmp_from = get_tmp(2,self.id.split('_')[0]); for(var i in tmp_from){ tmp_from[i].px = get_xy(e)[0]-tmp_from[i].posX; tmp_from[i].py = get_xy(e)[1]-tmp_from[i].posY; tmp_from[i].changeStyle(); } } document.onmousemove = function(e){ self.move(e); return false; }; document.onmouseup = function(e){ self.stop(e); }; return false; }; } DragClass.prototype.move = function(e){ if(this.type == 3){ this.obj.style.left = (get_xy(e)[0]-this.px)+'px'; this.obj.style.top = (get_xy(e)[1]-this.py)+'px'; } else if(this.type == 1 || this.type == 2){ for(var i in tmp_from){ tmp_from[i].obj.style.left = (get_xy(e)[0]-tmp_from[i].px)+'px'; tmp_from[i].obj.style.top = (get_xy(e)[1]-tmp_from[i].py)+'px'; } } } DragClass.prototype.stop = function(e){ this.check(get_xy(e)[0],get_xy(e)[1]); if(this.type == 3){ this.changeStyleBack(); } else{ for(var i in tmp_from){ tmp_from[i].changeStyleBack(); } } document.onmousemove = null; document.onmouseup = null; } DragClass.prototype.changeStyle = function(){ this.obj.style.background = "lightgray"; this.obj.style.zIndex = "1"; } DragClass.prototype.changeStyleBack = function(){ this.obj.style.background = this.color; this.obj.style.zIndex = '0'; } DragClass.prototype.check = function(x,y){ //check single var flag = true; var flags = true; for(var key in arr){ var i = arr[key].id.split("_")[0]; var j = arr[key].id.split("_")[1]; if(this.type == 3 && arr[key].type == 3){ if(x<30+j*100+width && x>30+j*100 && y<30+i*100+height && y>30+i*100){ this.table_each(arr[key]); flag = false; break; } } else if(this.type == 1 && arr[key].type == 1){ if(x<30+j*100+width && x>30+j*100 && y<30+i*100+height && y>30+i*100){ tmp_to = get_tmp(1, j); if(tmp_to.length == tmp_from.length){ //alert('ok'); for(var ii=0; ii<tmp_to.length; ii++){ tmp_from[ii].table_each(tmp_to[ii]); } } flags = false; break; } } else if(this.type == 2 && arr[key].type == 2){ if(x<30+j*100+width && x>30+j*100 && y<30+i*100+height && y>30+i*100){ tmp_to = get_tmp(2, i); if(tmp_to.length == tmp_from.length){ //alert('ok'); for(var ii=0; ii<tmp_to.length; ii++){ tmp_from[ii].table_each(tmp_to[ii]); } } flags = false; break; } } } if(flag){ this.obj.style.left = this.posX + 'px'; this.obj.style.top = this.posY + 'px'; } if(flags){ for(var x in tmp_from){ tmp_from[x].obj.style.left = tmp_from[x].posX+'px'; tmp_from[x].obj.style.top = tmp_from[x].posY+'px'; } } } DragClass.prototype.table_each = function(o){ //交换 var px = this.posX; var py = this.posY; var id = this.id; this.posX = o.posX; this.posY = o.posY; this.id = o.id; o.id = id; o.posX = px; o.posY = py; this.obj.style.left = this.posX + 'px'; this.obj.style.top = this.posY + 'px'; o.obj.style.left = o.posX+'px'; o.obj.style.top = o.posY+'px'; } function init(){ var frag = document.createDocumentFragment(); //create fragment for(var i=0; i<row; i++){ for(var j=0; j<col; j++){ var span = document.createElement("span"); span.className = "mil"; span.style.position = "absolute"; span.style.width = width+'px'; span.style.height = height+'px'; span.style.top = 30+i*100+'px'; span.style.left = 30+j*100+'px'; span.id = i+'_'+j; var obj = new DragClass(span.id, 30+j*100, 30+i*100); obj.obj = span; arr.push(obj); if(i==0 && j==0){ //head obj.type = 4; } else if(i==0){ // col head span.innerHTML = "列头"+j; obj.type = 1; } else if(j==0){ // row head span.innerHTML = "行头"+i; obj.type = 2; } else{ span.innerHTML = "表格"+i+"_"+j; obj.type = 3; } obj.init(); frag.appendChild(span); } } $('main').appendChild(frag); } function get_tmp(type, i){ var tmp = []; for(var x in arr){ if(type == 1){ if(arr[x].id.split('_')[1] == i){ tmp.push(arr[x]); } } else{ if(arr[x].id.split('_')[0] == i) tmp.push(arr[x]); } } tmp.sort(function(a,b){ //asc sort var ax = a.id.split('_')[0]; var ay = a.id.split('_')[1]; var bx = b.id.split('_')[0]; var by = b.id.split('_')[1]; if(ax < bx || ay < by) return 1; else return -1; }) return tmp; } function get_xy(e){ //get mouse e = e || window.event; var arr = []; var x = e.pageX || e.clientX; var y = e.pageY || e.clientY; x = x-$('main').offsetLeft; arr[0] = x; arr[1] = y; return arr; } window.onload = function(){ init(); } </script>
某公司的一道js面试题,要实现一种类似于可拖动表格的功能!
发表评论
-
关于CSS hack的一张图
2010-06-23 10:15 800今天在网上浏览的时候看见了一张总结的关于css hack的图, ... -
js绑定事件打印索引的方法整理
2010-05-13 16:58 1622很常见的问题,dom对象 ... -
javascript继承
2010-05-05 10:59 745<script type="text/java ... -
javascript closure
2010-03-27 08:57 1059JAVASCRIPT闭包(Closure)(闭 ... -
javascript作用域
2010-03-27 08:55 1157javascript作用域 一 js的运行顺序 (先声明后赋 ... -
CSS定位和浮动
2009-12-01 22:37 1977一些css中关于盒模型的定位和浮动的点滴。 CSS 定 ... -
css盒模型
2009-12-01 22:23 992一些css盒模型的比较 ... -
浏览器内核
2009-11-29 22:01 1103浏览器内核: 浏览 ... -
js的一个简单效果
2009-11-27 00:41 723一个js的拖拽小效果,本来是给以前公司webgame项 ...
相关推荐
去某公司(公司名不说了,人这套题说不定还要用)面试,现场30分钟做了一套题,其中有一道是这样的: 要求用js写一个函数,对传入的形如下网址字符串,返回对应的对象。 如: 若传入字符串a=’?name=zhiyelee&blog=...
面试大前端每日一题,从基础到进阶,从原理到实战,用面试题来倒逼强迫自己每天去学习去查漏补缺,系统完善前端的完整知识体系!注:每天早上9点左右更新译文及前一天的答案,首页文件夹里的文章扩展网络,替代参考...
DeepSeek与AI幻觉-清华大学团队制作 一、什么是AI幻觉 (定义与基础概念) 二、DeepSeek为什么会产生幻觉 (聚焦特定AI模型的幻觉成因分析) 三、AI幻觉评测 (评估AI幻觉的频率、类型与影响的方法) 四、如何减缓AI幻觉 (解决方案与技术优化方向) 五、AI幻觉的创造力价值 (探讨幻觉在创新场景中的潜在益处,如艺术生成、灵感激发等)
协同过滤算法商品推荐系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 前台用户可以实现注册登录、商品浏览,在线客服,加入购物车,加入收藏,下单购买,个人信息管理,收货信息管理,收藏管理,评论功能。 后台管理员可以进行用户管理、商品分类管理、商品信息管理、订单评价管理、系统管理、订单管理。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。
MES系统数字化工厂解决方案.pptx
MUI调用照片以及裁剪和图库照片上传到服务器
GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序, 是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。这是一种基于人工智能技术的问答系统, 可以实现智能回答用户提出的问题。相比传统的问答系统,ChatGPT可以更加准确地理解用户的意图, 提供更加精准的答案。同时系统采用了最新的GPT3.5接口与GPT4模型,同时还支持型,文心一言,腾讯混元, 讯飞星火,通义千问,DeepSeeK,智普等等国内各种大模型,可以更好地适应不同的应用场景,支持站点无限多开, 可以说ChatGPT付费创作系统目前国内相对体验比较好的一款的ChatGPT及多接口软件系统。 新增接入DeepSeek-R1、DeepSeek-V3(Ollama自部署和第三方均支持)、高级通道增加DeepSeek、 支持AI接口输出的reasoning_content字段(新的推理输出格式)、更新模型库、修复导出Excel的bug等功能, 优化了云灵Midjourney接口,出图更快更稳定。小程序端变化不大该系统版本测试下来比较完美, 老版本升级时数据库结构同步下,同时把原来
内容概要:本文档详细介绍了一款基于Java技术的美食点餐管理平台的设计与实现。该平台旨在优化传统餐饮行业的服务流程,通过智能化的点餐系统、高效的订单处理、智能库存管理和数据分析等功能,为用户提供便捷高效的点餐体验,并提升餐厅管理效率和服务质量。系统涵盖了前端设计、后端开发、数据库设计等方面,采用了成熟的Java技术和现代Web开发框架,如Spring Boot、Vue.js或React,确保系统的高效性和稳定性。此外,文档还包括详细的用户界面设计、模块实现以及系统部署指南,帮助开发者理解和搭建该平台。 适合人群:具备一定的Java编程基础和技术经验的研发人员、IT从业者以及有意开发类似系统的企业和个人。 使用场景及目标:①为餐厅提供一个集点餐、订单处理、库存管理于一体的高效平台;②优化传统餐饮服务流程,提升客户服务体验;③利用大数据分析辅助决策,助力餐饮企业精细化运营;④通过集成多种支付方式和其他外部系统,满足多样化的商业需求。 其他说明:本项目不仅提供了完整的技术方案和支持文档,还针对实际应用场景提出了多个扩展方向和技术优化思路,旨在引导用户不断迭代和完善该平台的功能和性能。
相场模拟与激光制造技术:选择性激光烧结、激光融覆中的凝固与枝晶生长研究,相场模拟与激光制造技术:选择性激光烧结、激光融覆及凝固过程中的枝晶生长研究,相场模拟 选择性激光烧结 激光融覆 凝固 枝晶生长 ,相场模拟; 选择性激光烧结; 激光融覆; 凝固; 枝晶生长,相场模拟与激光工艺:枝晶生长的凝固过程研究
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
关于加强新能源汽车安全管理涉及的法规标准分析.pptx
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
UI+svg格式
关于乘用车燃料消耗量评价方法及指标强制性国家标准的分析.pptx
1、文件内容:openjpeg-1.5.1-18.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/openjpeg-1.5.1-18.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
FPGA Verilog实现BT656与1120视频协议组帧解帧代码详解:含文档介绍与仿真验证,FPGA Verilog实现BT656与1120视频协议组帧解帧代码详解:含文档介绍与仿真验证,fpga verilog实现视频协议bt656和1120组帧解帧代码 有文档介绍协议,有mod仿真,matlab代码仿真 ,FPGA; Verilog; BT656协议; 1120组帧解帧代码; 文档介绍; Mod仿真; Matlab代码仿真,FPGA Verilog:实现BT656与1120组帧解帧代码的仿真与文档化研究
基于 RAG 与大模型技术的医疗问答系统,利用 DiseaseKG 数据集与 Neo4j 构 建知识图谱,结合 BERT 的命名实体识别和 34b 大模型的意图识别,通过精确的知识检索和问答生成, 提升系统在医疗咨询中的性能,解决大模型在医疗领域应用的可靠性问题。.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
抖音视频带货:行业趋势与营销策略.pptx