一个对表格进行拖拽来交换单元格数据的脚本

单元格|脚本|数据

对表格进行拖拽来交换单元格的数据,呵呵,拷贝下来试试看吧 : )

<!-- 欢迎转载,请保留作者及其出处,谢谢 -->
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>拖动</TITLE>
<STYLE>
td{width:20%;height:20px;border-bottom:1px solid black;border-right:1px solid black;cursor:default;}
div{font-size:13px;}
th{height:20px;font-size:12px;font-weight:normal;border-bottom:2px solid black;background-color:#CCCCCC}
table{border:1px solid black;font-size:13px;}
</STYLE>
<script language="javascript">
/************************************ dragedTableData.js *******************************/
/************************************ dragedTableData.js *******************************/
/*
* created by LxcJie 2004.4.12
* 可以实现表格内容的内部拖动
* 确保中间过度层的存在,id为指定
*/

/*--------全局变量-----------*/
var dragedTable_x0,dragedTable_y0,dragedTable_x1,dragedTable_y1;
var dragedTable_movable = false;
var dragedTable_preCell = null;
var dragedTable_normalColor = null;
//起始单元格的颜色
var dragedTable_preColor = "lavender";
//目标单元格的颜色
var dragedTable_endColor = "#FFCCFF";
var dragedTable_movedDiv = "dragedTable_movedDiv";
var dragedTable_tableId = "";
/*--------全局变量-----------*/

function DragedTable(tableId)
{
dragedTable_tableId = tableId;
var oTempDiv = document.createElement("div");
oTempDiv.id = dragedTable_movedDiv;
oTempDiv.onselectstart = function(){return false};
oTempDiv.style.cursor = "hand";
oTempDiv.style.position = "absolute";
oTempDiv.style.border = "1px solid black";
oTempDiv.style.backgroundColor = dragedTable_endColor;
oTempDiv.style.display = "none";
document.body.appendChild(oTempDiv);
document.all(tableId).onmousedown = showDiv;
}

//得到控件的绝对位置
function getPos(cell)
{
var pos = new Array();
var t=cell.offsetTop;
var l=cell.offsetLeft;
while(cell=cell.offsetParent)
{
t+=cell.offsetTop;
l+=cell.offsetLeft;
}
pos[0] = t;
pos[1] = l;
return pos;
}

//显示图层
function showDiv()
{
var obj = event.srcElement;
var pos = new Array();
//获取过度图层
var oDiv = document.all(dragedTable_movedDiv);
if(obj.tagName.toLowerCase() == "td")
{
obj.style.cursor = "hand";
pos = getPos(obj);
//计算中间过度层位置,赋值
oDiv.style.width = obj.offsetWidth;
oDiv.style.height = obj.offsetHeight;
oDiv.style.top = pos[0];
oDiv.style.left = pos[1];
oDiv.innerHTML = obj.innerHTML;
oDiv.style.display = "";
dragedTable_x0 = pos[1];
dragedTable_y0 = pos[0];
dragedTable_x1 = event.clientX;
dragedTable_y1 = event.clientY;
//记住原td
dragedTable_normalColor = obj.style.backgroundColor;
obj.style.backgroundColor = dragedTable_preColor;
dragedTable_preCell = obj;

dragedTable_movable = true;
}
}
function dragDiv()
{
if(dragedTable_movable)
{
var oDiv = document.all(dragedTable_movedDiv);
var pos = new Array();
oDiv.style.top = event.clientY - dragedTable_y1 + dragedTable_y0;
oDiv.style.left = event.clientX - dragedTable_x1 + dragedTable_x0;
var oTable = document.all(dragedTable_tableId);
for(var i=0; i<oTable.cells.length; i++)
{
if(oTable.cells[i].tagName.toLowerCase() == "td")
{
pos = getPos(oTable.cells[i]);
if(event.x>pos[1]&&event.x<pos[1]+oTable.cells[i].offsetWidth
&& event.y>pos[0]&& event.y<pos[0]+oTable.cells[i].offsetHeight)
{
if(oTable.cells[i] != dragedTable_preCell)
oTable.cells[i].style.backgroundColor = dragedTable_endColor;
}
else
{
if(oTable.cells[i] != dragedTable_preCell)
oTable.cells[i].style.backgroundColor = dragedTable_normalColor;
}
}
}
}
}

function hideDiv()
{
if(dragedTable_movable)
{
var oTable = document.all(dragedTable_tableId);
var pos = new Array();
if(dragedTable_preCell != null)
{
for(var i=0; i<oTable.cells.length; i++)
{
pos = getPos(oTable.cells[i]);
//计算鼠标位置,是否在某个单元格的范围之内
if(event.x>pos[1]&&event.x<pos[1]+oTable.cells[i].offsetWidth
&& event.y>pos[0]&& event.y<pos[0]+oTable.cells[i].offsetHeight)
{
if(oTable.cells[i].tagName.toLowerCase() == "td")
{
//交换文本
dragedTable_preCell.innerHTML = oTable.cells[i].innerHTML;
oTable.cells[i].innerHTML = document.all(dragedTable_movedDiv).innerHTML;
//清除原单元格和目标单元格的样式
dragedTable_preCell.style.backgroundColor = dragedTable_normalColor;
oTable.cells[i].style.backgroundColor = dragedTable_normalColor;
oTable.cells[i].style.cursor = "";
dragedTable_preCell.style.cursor = "";
dragedTable_preCell.style.backgroundColor = dragedTable_normalColor;
}
}
}
}
dragedTable_movable = false;
//清除提示图层
document.all(dragedTable_movedDiv).style.display = "none";
}
}

document.onmouseup = function()
{
hideDiv();
var oTable = document.all(dragedTable_tableId);
for(var i=0; i<oTable.cells.length; i++)
oTable.cells[i].style.backgroundColor = dragedTable_normalColor;
}

document.onmousemove = function()
{
dragDiv();
}

/************************************ dragedTableData.js 结束 *******************************/
/************************************ dragedTableData.js 结束 *******************************/
</script>
<script language="javascript">
function init()
{
//注册可拖拽表格
new DragedTable("tableId");
}
</script>
</HEAD>
<BODY oncontextmenu="return false;" onload="init()">
<TABLE id="tableId" width="70%" align="center" cellpadding="0" cellspacing="0">
<TR>
<TH colspan="4" style="">拖动交换单元格内容</TH>
</TR>
<TR>
<TD>Java</TD>
<TD>Java One </TD>
<TD>JBuilder</TD>
<TD>Stuts</TD>
</TR>
<TR>
<TD>C++</TD>
<TD>Visual Studio</TD>
<TD>Office</TD>
<TD>Windows</TD>
</TR>
<TR>
<TD>PhotoShop</TD>
<TD>Java</TD>
<TD>Illustrator</TD>
<TD>PageMaker</TD>
</TR>
<TR>
<TD>Cartoon</TD>
<TD>Telephone</TD>
<TD>China</TD>
<TD>USA</TD>
</TR>
<TR>
<TD>Java</TD>
<TD>Java One </TD>
<TD>JBuilder</TD>
<TD>Stuts</TD>
</TR>
<TR>
<TD>C++</TD>
<TD>Visual Studio</TD>
<TD>Office</TD>
<TD>Windows</TD>
</TR>
<TR>
<TD>PhotoShop</TD>
<TD>Flash</TD>
<TD>Illustrator</TD>
<TD>PageMaker</TD>
</TR>
<TR>
<TD>Cartoon</TD>
<TD>Telephone</TD>
<TD>China</TD>
<TD>USA</TD>
</TR>
</TABLE>
</BODY>
</HTML>

时间: 2024-12-27 13:54:38

一个对表格进行拖拽来交换单元格数据的脚本的相关文章

JS组件系列——Bootstrap Table 表格行拖拽

原文:JS组件系列--Bootstrap Table 表格行拖拽 前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到一个需求,说是两种不同状态的订单之间要实现插单的效果,页面上呈现方式是:左右两个Table,左边Table里面是状态为1的订单,右边Table里面是状态为2订单,左边Table里面的行数据拖动到右边Table里面指定行的位置,拖动完成

WPS表格教程:单元格数据的组合、拆分与格式转换

教程的核心内容是分列操作,将用四个实例向大家介绍在WPS表格(ET)中,如何将单元格中的数据组合.拆分(提取)和格式转换. 实例一:用公式或函数组合数据获取出生地址 1.用"&"号组合数据. 2.用函数(CONCATENATE)组合数据. 实例二:拆分考试号,获取学校.班级.学号信息. 城南.城北两校联合组织五六年级语文竞赛,学生成绩统计如下: 要将各校各班的成绩分类汇总,当然要先将各校各班的学生分开,打开ET实践一下吧! 一.数据分析. 学生的考试号由学校代码(cn,cb)班

WPS表格单元格数据组合如何拆分

  WPS表格单元格数据的组合拆分及格式转换的教程: 实例一:用公式或函数组合数据获取出生地址 1.用"&"号组合数据. 2.用函数(CONCATENATE)组合数据. 实例二:拆分考试号,获取学校.班级.学号信息. 城南.城北两校联合组织五六年级语文竞赛,学生成绩统计如下: 要将各校各班的成绩分类汇总,当然要先将各校各班的学生分开 一.数据分析. 学生的考试号由学校代码(cn,cb)班级代码(51,52,61,62)学生代码(01-48)三部分组成.现在要做的是将其拆分开来,

WPS表格技巧:单元格数据的组合、拆分与格式转换

教程的核心内容是分列操作,将用四个实例向大家介绍在WPS表格(ET)中,如何将单元格中的数据组合.拆分(提取)和格式转换. 实例一:用公式或函数组合数据获取出生地址 1.用"&"号组合数据. 2.用函数(CONCATENATE)组合数据. 实例二:拆分考试号,获取学校.班级.学号信息. 城南.城北两校联合组织五六年级语文竞赛,学生成绩统计如下: 要将各校各班的成绩分类汇总,当然要先将各校各班的学生分开,打开ET实践一下吧! 一.数据分析. 学生的考试号由学校代码(cn,cb)班

Excel表格中如何设置不可修改单元格

有时候我们希望对Excel表格的数据编辑做一些限制:比如只允许部分单元格的内容可以修改,其余的单元格数据则不允许修改(包括字号.字体等),我们可以这样操作. 现在我们有一个Excel表格,想要设置B2.B3.B4单元格为允许修改的部分,其余部分不可修改. 1.选择允许修改的区域(B2.B3.B4单元格),点击右键,从右键菜单中选择"设置单元格格式". 在"保护"选项卡中,去掉"锁定"前面的钩. 2.再击菜单栏上的"工具" →&

jxl 数值型单元格-jxl 操作excel表格,新增的数值型单元格如何格式化

问题描述 jxl 操作excel表格,新增的数值型单元格如何格式化 比如字符串的单元格,可以引用定义好的样式myStyle,如: Label lb1 = new jxl.write.Label(10, 0, "正常",myStyle); sheet0.addCell(lb1); 但数值型增加的时候,少了一个类似的引用格式参数,如: jxl.write.Number lb2 = new jxl.write.Number(11, 0, 11.11); sheet0.addCell(lb1)

Excel2010有公式的单元格数据复制教程

  Excel2010有公式的单元格数据复制教程           1.打开要复制数据的表格. Excel2010 2.可以看到总成绩那一列的数据使用公式生成的. Excel2010 3.选择好要复制的数据,然后点击右键,点击[复制]. 4.在要粘贴的表格处单击鼠标右键,点击[选择性粘贴]. Excel2010 5.弹出[选择性粘贴]对话框. Excel2010 6.点击[数据]. 7.点击[确定]. Excel2010 8.可以看到这下子粘贴的是数据了.

Excel怎么把多个单元格数据合并到1个单元格里?

  Excel怎么把多个单元格数据合并到1个单元格里? 1.首先打开要使用的表格. 2.然后选择A列和B列的数据到C列.选择A列的数据加上&"-"&和B列的数据 3.把信息都输入之后需要点击保存就就可以得到我们所需要的数据. 4.按照C列的数据选中单元格然后往下拉 5.然后就可以得到整体的数据啦,是不是很方便

巧妙提取合并单元格及对应单元格数据

在WPS表格中,我们经常会用到合并单元格.在很多情况下,使用合并单元格会使表格更加醒目.条理.但你遇到过提取合并单元格的数据的问题吗?如图1所示,左侧为某位老师辛辛苦苦建立的学生成绩汇总表,郁闷的是现在需要根据这张表还原学生在两次考试中的成绩(图1右侧). 图1 一.提取合并单元格中的姓名 观察原始表发现,每一姓名均为6个单元格合并而成.由于合并单元格只保留最上方的单元格数据.所以在目标表格"姓名"列应依次引用B3.B9.B15.--单元格数据.看这行数,这不就是高中时学过的那个等差数