终于有思路 能写点自己的东西了

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>拖拽</title>
<style>
ul,li{list-style: none;}
.clearfix:after{content:"";height: 0; display: block; clear: both; visibility: hidden;}
.clearfix{zoom:1;}
#box-1,#box-2{ position: relative; width: 100%;}
#b1 li{float: left;width:30px;height:30px;background: #ccc;margin:5px;cursor: pointer;}
#b2 li{float: left;width:30px;height:30px;background: green;margin:5px;cursor: pointer;}
</style>
</head>
<body>
<div id="b1" class="clearfix">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<div id="b2" class="clearfix">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script type="text/javascript">
var box1 = document.getElementById(‘b1‘);
var box2 = document.getElementById(‘b2‘);
var blist1 = box1.getElementsByTagName(‘li‘);
var blist2 = box2.getElementsByTagName(‘li‘);
for (var i = 0; i < blist1.length; i++) {
Drag(blist1[i]);
}

function Drag(obj) {
var index;

obj.onmousedown = function(ev) {
ev = ev || window.event;
obj.style.opacity = "0.8";
disX = ev.clientX - obj.offsetLeft;
disY = ev.clientY - obj.offsetTop;
var This=this;
document.onmousemove = function(ev) {
ev = ev || window.event;
obj.style.position = "absolute";
obj.style.backgroundColor = "red";
obj.style.left = ev.clientX - disX + "px";
obj.style.top = ev.clientY - disY + "px";
var lines=getLines();
//console.log(lines);
lines.remove(index);
var minIndex=lines.getMinIndex();
//console.log(minIndex);
blist2.push(blist1[index]);

}

document.onmouseup = function() {
document.onmousemove = null;
document.onmouseup = null;
obj.style.position="relative";
obj.style.opacity = "1";
}

}

//获取两个元素之间的距离 返回数组l
function getLines() {
var arr=[];
for (var i = 0; i < blist1.length; i++) {
//var c = lineDis(blist1[i], obj);
//arr.push(Math.floor(c));
if(blist1[i]==obj){
index=i;
}
}

for (var j = 0; j < blist2.length; j++) {
var d = lineDis(blist2[j], obj);
arr.push(Math.floor(d));
}

return arr;
}

}

/**
  * 方法:lineDis(obj1,obj2)
  * 功能:以对象的左上角为准,两个对象的距离
  * 参数:需要求距离的两个对象
  * 返回:两个对象之间的距离值
  */
function lineDis(obj1,obj2) {
var a = obj1.offsetLeft - obj2.offsetLeft;
var b = obj1.offsetTop - obj2.offsetTop;
return Math.sqrt(a * a + b * b);
}

/**
  * 方法:Array.remove(index)
  * 功能:删除数组元素
  * 参数:index删除元素的下标
  * 返回:在原数组上修改数组
  */
Array.prototype.remove=function(index)
 {
  if(isNaN(index)||index>this.length){return false;}
  for(var i=0,n=0;i<this.length;i++)
  {
    if(this[i]!=this[index])
    {
      this[n++]=this[i];
    }
  }
  this.length-=1;
 }

/**
  * 方法:Array.indexOf(val)
  * 功能:获取元素的下标
  * 参数:需要返回下标的数组元素
  * 返回:该元素的下标
  */
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
/**
  * 方法:Array.getMin()
  * 功能:获取数组的最小值的下标
  * 参数:
  * 返回:数组的最小值的下标
  */
Array.prototype.getMinIndex = function() {
var min = this[0];
var len = this.length;
for (var i = 1; i < len; i++) {
if (this[i] < min) {
min = this[i];
var num =i;
}
}
return num;
};

</script>
</body>
</html>

时间: 2024-08-11 17:16:51

终于有思路 能写点自己的东西了的相关文章

终于决定要开始写博客了

一个还在读大一的学生,因为喜欢计算机方面的技术而开始自己的学习 看得编程相关的书籍不多,关于 C语言 的就只是我们的课本(没错,就是谭浩强先生编写的<C程序设计>) 所以在理论知识和技术上还是有很多的不足 因为前段时间要改学校的网站,就自学了下 ASP.NET,用的语言是C#,看了些学校图书馆的书籍 现在能做得就是简单显示和 SQL数据库连接 本来了是要自己用所学的搭建一个博客小站,可惜发现自己的技术储备还是不够(终极原因是我懒的做 Σ( ° △ °|||)︴) 所以了选择了先在博客园这个大神

再写点看到的东西

刚刚看到了一篇文章,说python已经成为美国大学计算机编程入门语言的首选. 先来看图:(图引自他人的文章) python语言图标 调查中抽取了39所著名大学作为样本,统计了他们为新生准备的编程入门语言种类. 情况如下: 从统计中可以看出python已经成为美国大学计算机编程教育的首选语言. 我用过c++,java,c,python, 个人觉得这其中python的语法结构最简洁清晰,类库很丰富,能轻松完成其他其他语言很难完成的任务. python作为第一入门语言也是很正常的,在国外的计算机编程教

Java对比两个数据库中的表和字段,写个冷门的东西

Java对比两个数据库中的表和字段,写个冷门的东西 转载的 来源网络 目前所在的项目组距离下个版本上线已经很近了,就面临了一个问题:开发人员在开发库上根据需要增加数据表.数据字段.或者变更了字段类型或者字段长度等等. 由于时间比较紧迫,导致在开发过程中不可能一一把DDL数据库脚本记录下来,在比较大的项目中,比如我所在项目开发的系统大概包含了800张左右的表,字段上10000个的情况下,人工处理明显不可行,所以我们就得通过程序来判断比对,哪些是我们需要新增加的表,哪些是我们需要新增加的字段,哪些是

筹划开始写一个系列的东西

最近晚上的时间相对来说是比较宽裕的,所以想写一个系列的东西出来,以便于巩固自己当前的知识体系. 目前我的计划如下: 1. WebAPI 系列讲解. 2. Signalr 系列讲解. 3. MySQL数据库系列讲解. 4. ABP框架系列讲解. 5. 自学DDD系列讲解. 6. 敏捷开发之我所见所闻系列讲解. 7. 自学TDD系列讲解. 8. KnockOut.JS系列讲解. 9. 自己读的和技术无关的一些书籍方面的系列. 我非常喜欢研究DDD框架,SOA框架和基于事件消息模型的中间件框架,同时对

写代码的思路之写一个功能的思路

如果让你实现一个功能,你要完成这个功能的一般思路是什么? 我是一位初学者,希望和大家共享下我在书写代码时的思路,希望对大家有帮助. 以下是我实现一个简单‘日历“这一功能的思路: 当我决定要做一个日历的时候,我会先制作一个”日历“模型,即要实现的”日历“的模型(样子),我用控件制作的: 之后我会按照”日历“模型上面的控件从上到下,从左到右依次声明,但先不实现: 之后一个控件一个控件实现,在设计控件的属性的时候是严格按照之前”日历“模型的属性,这会提高效率: 一个控件实现了之后要做一次测试,保证该控

安卓通过spinner实现二级选择地区(根据思路可以写三级)

思路I  :通过二维数据放我们需要的城市地区 ,第一个spinner加载第一级城市,监听第一级城市去控制第二个spinner加载二级城市. demo下载地址http://download.csdn.net/detail/u012303938/8838489 代码如下: MainActivity package com.example.testdiqu; import java.util.ArrayList; import android.support.v7.app.ActionBarActiv

把之前写的一个小东西代码分享出来

大家接触到流的输出输入和GUI就会自己写了,其实soeasy 所以不好意思拿出来,毕竟是小白,主要还是因为懒,FileDialog也懒得弄了,讲道理界面太丑,加了dialog也挺low,自己想留着用的可以自己去完善,基本上加些东西就ok了.如果你们复制过去发现没有图片,请不要紧张,因为图片在我这啊~~你们自己照着路径修改就好了,群里面有打包了的有图片的,有需要二次元 图片的可以私聊我哟..... 启动类:什么都木有,哈哈哈 1 package practice.AsceticJ; 2 3 /**

这几天对Redis的初探,写一个阶段性的东西

原来基于wcf写了一个交互框架,其中自定义了一个session队列,用于保存客户端连接的一些信息. 这几天在想如何将这个wcf框架做负载均衡,于是将session队列拆分出来,用一个共享的内存进行处理,以前接触过一下memcached,后来发现Redis比memcached更有优势.于是开始着手研究Redis.(当然 Redis仅仅存储一个客户端session似乎大才小用,直接用一个ConcurrentDictionary不就能解决么?管他呢,先研究一下咯.) 首先Redis是跨平台的,这里再废

[杂谈]写博的好东西

安利一个好东西 WindowsLiveWriter 就是这个,真的好用!