jsp可拖动表格
用JSP实现拖拽上传文件和文件夹
用JSP实现拖拽上传文件和文件夹JSP(JavaServer Pages)是一种动态网页技术,允许将Java代码嵌入到HTML页面中。
拖拽上传文件和文件夹是一种常见的网页交互功能,可以使用JSP来实现。
在实现拖拽上传文件和文件夹功能之前,首先需要了解一下拖拽上传的基本原理。
在HTML中,可以通过Drag and Drop API来获取拖拽的文件和文件夹。
然后,可以使用JavaScript将拖拽的文件和文件夹发送到服务器端,服务器端可以使用JSP来处理这些文件和文件夹。
以下是一个基本的实现拖拽上传文件的JSP页面的示例:```htmlpageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>拖拽上传文件</title><script>function handleDrop(event)event.preventDefault(; // 禁止浏览器打开文件var files = event.dataTransfer.files;//遍历上传的文件for (var i = 0; i < files.length; i++)var file = files[i];// 创建FormData对象,用于发送文件到服务器var formData = new FormData(;formData.append("file", file);// 创建一个XMLHttpRequest对象,发送文件到服务器var xhr = new XMLHttpRequest(;xhr.open("POST", "upload.jsp", true);xhr.onreadystatechange = functioif (xhr.readyState == 4 && xhr.status == 200)//上传成功console.log(xhr.responseText);}};xhr.send(formData);}}</script></head><body ondragover="event.preventDefault(;"ondrop="handleDrop(event);"><h1>拖拽上传文件</h1><p>将文件拖拽到此处上传</p></body></html>```当文件被拖拽到页面的时候,`handleDrop(`函数会被调用。
JS组件BootstrapTable表格行拖拽效果实现代码
JS组件BootstrapTable表格⾏拖拽效果实现代码⼀、业务需求及实现效果项⽬涉及到订单模块,那天突然接到⼀个需求,说是两种不同状态的订单之间要实现插单的效果,页⾯上呈现⽅式是:左右两个Table,左边Table⾥⾯是状态为1的订单,右边Table⾥⾯是状态为2订单,左边Table⾥⾯的⾏数据拖动到右边Table⾥⾯指定⾏的位置,拖动完成后,左边表格减少⼀⾏,右边表格增加⼀⾏。
除此之外,还需要撤销操作(相当于Ctrl + Z操作),能够返回到上⼀步的状态。
可能描述会让⼤家模拟两可,反正已经实现了,先来看看效果图吧。
1、先看看拖动之前的效果2、这是拖动左边表格⾏数据的效果3、拖动⼀⾏完成之后表格数据的效果4、第⼆次、第三次拖动完成后效果5、右边表格上⾯撤销操作点击效果6、多次点击撤销,表格回到初始状态⼆、代码⽰例接到需求的第⼀感觉是应该上Bootstrap table api⾥⾯找⼀下,毕竟开源的⼒量是强⼤的,或许有相关的⽰例呢。
经过⼀番查找,很可惜,Bootstrap Table没有这种两张表格之间的操作。
想想其实也可以理解,Bootstrap Table是针对某个动态表格数据绑定的,它的侧重点是表格内部的功能,⽐如表格内部⾏的拖拽排序(Reorder Rows)有很好的解决⽅案,对于像博主这样的特殊需求,似乎也应该⾃⼰去实现。
1、需求分析既然决定⾃⼰去写,开始分析需求,似乎这个操作⾥⾯⽐较困难的是拖拽效果,说到拖拽效果,原来使⽤JsPlumb的时候那使⽤太多了,于是就想到了我们神奇的JQuery UI⾥⾯的draggable.js 和droppable.js。
拖拽的问题解决了,那么还有⼀个难点,就是撤销操作怎么办?我们知道Ctrl+z的意思是还原,什么叫还原?就是返回到上⼀步的操作,那么前提是要能够保存上⼀步的状态,说到保存某⼀步的状态,博主就知道怎么做了,需要⼀个全局变量Json,⾥⾯要有三个键值对,分别是当前步骤的索引、左边表格的数据、右边表格的数据。
sortablejs和el-table使用
SortableJS 是一个现代化的、轻量级的库,用于使任何HTML表格元素可排序。
它允许用户通过拖放来动态地重新排列表格行,同时提供了多种可自定义的选项和回调函数,使得对表格的排序行为能够完全按照开发者的意愿来进行。
在Vue.js框架中,我们通常使用element-ui来构建用户界面。
Element UI 中的 el-table 是一个非常常用的组件,它提供了丰富的可配置选项和强大的功能,用于展示和操作表格数据。
结合SortableJS 和 el-table 的使用,可以让我们在Vue.js项目中轻松实现表格的拖拽排序功能。
接下来,我们将详细介绍如何在Vue.js项目中使用SortableJS 和 el-table 来实现表格的拖拽排序,以及一些注意事项。
一、安装SortableJS和element-ui在使用之前,我们首先需要安装SortableJS 和element-ui 这两个库。
在Vue.js项目中,我们可以通过npm或yarn来进行安装。
1. 安装SortableJS在命令行中运行以下命令来安装SortableJS:```bashnpm install sortablejs```2. 安装element-ui在命令行中运行以下命令来安装element-ui:```bashnpm install element-ui```安装完成之后,我们就可以开始在Vue.js项目中使用这两个库了。
二、在Vue.js项目中使用SortableJS在Vue.js项目中使用SortableJS,我们首先需要引入它,并在需要进行排序的表格上添加相应的指令和事件处理函数。
1. 引入SortableJS在需要使用SortableJS的组件中,首先需要引入SortableJS:```javascriptimport Sortable from 'sortablejs';```2. 编写排序方法在组件的生命周期钩子函数中,我们可以编写一个方法,用来初始化SortableJS,并设置相关的选项和回调函数:```javascriptexport default {mounted() {this.initSortable();},methods: {initSortable() {new Sortable(this.$refs.sortableTable, {animation: 150,onEnd: (evt) => {// 拖拽结束后的操作// evt.oldIndex 表示拖动前的位置// evt.newIndex 表示拖动后的位置// 可以在这里处理数据的更新}});}}}```在这个例子中,我们在组件的 mounted 钩子函数中调用了initSortable 方法,用来初始化SortableJS。
el-table实现拖拽列方法
el-table实现拖拽列方法
摘要:
1.介绍el-table 组件
2.拖拽列功能在el-table 中的实现
3.实现拖拽列的方法
a.使用原生JavaScript 实现
b.使用第三方库实现
4.总结
正文:
el-table 是Element UI 中的一个表格组件,提供了丰富的功能,如排序、筛选、复选框等。
在实际使用过程中,有时需要实现拖拽列的功能,以便用户可以自由调整表格的列顺序。
本篇文章将介绍如何实现el-table 的拖拽列功能。
要实现拖拽列的功能,可以通过以下两种方法:
1.使用原生JavaScript 实现
首先,需要在表格的每个单元格中添加点击事件监听器。
当用户点击单元格时,可以通过判断鼠标的位置来判断用户是否要拖拽列。
接着,需要计算列的位置,以便在拖拽过程中实时更新列的显示顺序。
最后,将计算得到的列位置信息发送给服务器,更新数据库中的列顺序。
2.使用第三方库实现
市面上有很多现成的拖拽库,如jQuery UI、Draggable.js 等。
这些库提
供了丰富的拖拽功能,只需简单地配置即可实现拖拽列的功能。
首先,引入第三方库,然后为表格的每个列添加拖拽事件监听器。
当用户拖拽列时,触发拖拽事件,根据事件信息计算列的新位置,并发送给服务器更新数据库。
总之,实现el-table 的拖拽列功能需要对表格结构有一定的了解,并通过监听用户操作来实时更新列的位置。
使用原生JavaScript 实现较为复杂,需要处理多种情况;而使用第三方库实现则更加简单便捷。
jsp+js实现可排序表格
首先,定义一个js:tableSort.js:function sort(tableId, sortColumn,nodeType) {var table = document.getElementById("theTable");var tableBody = table.tBodies[0];var tableRows = tableBody.rows;var rowArray = new Array();for (var i = 0; i < tableRows.length; i++) {rowArray[i] = tableRows[i];}if (table.sortColumn == sortColumn) {rowArray.reverse();} else {rowArray.sort(generateCompareTR(sortColumn, nodeType));}var tbodyFragment = document.createDocumentFragment();for (var i = 0; i < rowArray.length; i++) {tbodyFragment.appendChild(rowArray[i]);}tableBody.appendChild(tbodyFragment);table.sortColumn = sortColumn;}function generateCompareTR(sortColumn, nodeType) {return function compareTR(trLeft, trRight) {var leftValue = convert(trLeft.cells[sortColumn].firstChild.nodeValue, nodeType);var rightValue = convert(trRight.cells[sortColumn].firstChild.nodeValue, nodeType); if (leftValue < rightValue) { return -1; } else {if (leftValue > rightValue) { return 1;} else {return 0;}}};}function convert(value, dataType) { switch (dataType) { case "int": return parseInt(value); case "float": return parseFloat(value); case "date": return new Date(Date.parse(value)); default: return value.toString(); }}然后是使用:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'tabel.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--><script type="text/javascript" src="userjs/tableSort.js"></script></head><body><table id="theTable" align="center" border="1"><tr><td>标题1</td><td onclick="sort(theTable,1,'int')"> 标题2</td><td onclick="sort(theTable,2,'int')"> 标题3</td><td onclick="sort(theTable,3,'int')"> 标题4</td><td onclick="sort(theTable,4,'int')"> 标题5</td><td onclick="sort(theTable,5,'int')"> 标题6</td><td onclick="sort(theTable,6,'int')"> 标题7</td></tr></thead><tbody><tr><td></td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td> </tr><tr><td>2</td><td>3</td>5</td><td>6</td><td>7</td><td>1</td> </tr><tr><td>3</td><td>4</td><td>5</td><td>6<td>1</td><td>2</td> </tr><tr><td>4</td><td>5</td><td>6</td><td>7</td><td>1</td><td></td> </tr><tr><td>5</td><td>6</td><td>7</td><td>1</td><td>2</td><td>3</td><td>4</td><tr><td>6</td><td>7</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr></tbody></table></body></html>之后就可以看到效果了。
js拖拽方法
js拖拽方法一、拖拽方法概述在JavaScript中,拖拽功能是用户与网页交互的一种常见方式。
通过拖拽,用户可以轻松地完成元素的重排、移动、缩放等操作。
本文将介绍JavaScript拖拽方法的分类及具体实现步骤,并给出两个实用的第三方库拖拽实例。
二、JavaScript拖拽方法分类1.原生拖拽原生拖拽是指使用JavaScript原生实现拖拽功能。
它通过监听鼠标事件(mousedown、mousemove、mouseup)来实现元素的拖拽。
2.第三方库拖拽第三方库拖拽是指使用一些成熟的库(如Dragula、Sortable.js等)来实现拖拽功能。
这些库封装了拖拽的细节,使用起来简单便捷,且具有丰富的功能和良好的可扩展性。
三、原生拖拽实现步骤1.获取元素首先,需要获取需要拖拽的元素。
可以使用getElementById、getElementsByClassName等方法获取。
2.添加事件监听器在获取到元素后,为元素添加mousedown、mousemove、mouseup 事件监听器。
3.实现拖拽功能在mousemove事件中,根据鼠标的移动方向和速度,计算元素的新位置,并更新元素样式。
4.释放事件监听器在mouseup事件中,释放mousedown事件监听器。
四、第三方库拖拽实例1.使用Dragula实现拖拽Dragula是一个轻量级的拖拽库,支持原生拖拽和惯性拖拽。
首先,引入Dragula库,然后为需要拖拽的元素添加dragula事件监听器。
具体使用方法可参考Dragula官方文档。
2.使用Sortable.js实现拖拽Sortable.js是一个基于HTML的拖拽库,支持拖拽列表、网格等多种布局。
首先,引入Sortable.js库,然后根据需求配置相关选项。
具体使用方法可参考Sortable.js官方文档。
五、拖拽应用场景拖拽功能广泛应用于网页设计中,如组件拖拽、文件上传、图片排序等。
通过使用拖拽功能,可以提高用户体验,使界面更加灵活。
js 库 实现数字滚动 表格滚动的方法
在web开发中,经常会遇到需要实现数字滚动和表格滚动的需求。
而实现这些功能,往往需要借助于js库来简化开发流程并提高功能的可定制性和性能。
以下是一些常见的实现数字滚动和表格滚动的方法和相关js库。
数字滚动的实现方法:1. 手写js代码实现数字滚动:可以通过使用setInterval()函数和DOM操作来实现数字的滚动效果。
这种方法比较简单,但是需要处理很多细节和兼容性问题。
2. 使用现成的js库实现数字滚动:有一些js库专门用于实现数字滚动效果,比如CountUp.js和Odometer.js。
这些库提供了丰富的配置选项和动画效果,可以方便地实现数字的滚动和动画效果。
表格滚动的实现方法:1. 使用原生的CSS和JavaScript来实现表格的滚动效果:通过设置表格的样式和添加事件监听来实现表格的横向和纵向滚动效果。
这种方法比较灵活,但是需要处理兼容性和性能问题。
2. 使用现成的表格滚动js库:有一些专门用于实现表格滚动效果的js 库,比如DataTable.js和FixedDataTable.js。
这些库提供了丰富的功能和选项,可以方便地实现表格的滚动效果,并且通常会提供一些额外的功能,比如排序、筛选和分页等。
总结回顾在实现数字滚动和表格滚动的过程中,使用js库可以大大简化开发流程并提高功能的可定制性和性能。
对于数字滚动,CountUp.js和Odometer.js是两个比较不错的选择,它们提供了丰富的配置选项和动画效果;对于表格滚动,DataTable.js和FixedDataTable.js是两个比较流行的js库,它们提供了丰富的功能和选项,并且通常会提供一些额外的功能,比如排序、筛选和分页等。
个人观点和理解在实际开发中,我们经常需要实现数字滚动和表格滚动的功能,而使用现成的js库可以大大简化开发流程并提高功能的可定制性和性能。
在选择js库时,需要根据具体的需求和功能要求来进行选择,同时也需要考虑js库的兼容性、性能和维护性等方面的因素。
java jsp页面中实现点击按钮动态添加表格
------如图显示页面:要求:点击“添加明细”按钮,页面中自动生成如下图显示的动态行和列实现上述功能的实例代码:【body里的table代码】.<table width="100%"border="0"cellspacing="1"id="tt"bgcolor="#ffffff"> .<tr class="firstpage1">.<td colspan="16"align="left">.</tr>.<tr class="firstpage">.<td height="23"width="5%">序号</td>.<td width="5%">交通工具</td>.<td width="5%">出发地点</td>.<td width="5%">抵达地点</td>.<td width="5%">.<a href="javascript:void(0)"onclick="addNew()">添加明细</a> .</td>.</tr>.</table>实现上述功能的实例代码:【body里的js代码】.<script type="text/javascript">.<!--.var i=0;.var arr=new Array('#cc99ff','#cc99ff');.alert(arr);.var count =1;.function addNew().{..var order_id =2014;.i++;.tr=document.all.tt.insertRow();.tr.style.backgroundColor=arr[i%2];.tr.insertCell().innerHTML='<div align=center>'+order_id+'</div>';.tr.insertCell().innerHTML='<div align=center>'+order_id+'</div>';.tr.insertCell().innerHTML='<div align=center><input style=\"width:80px;height:20px;border:none\" class=inputstyle type=text maxlength=20 size=8 name=START_SITUS class=border_index></div>';.tr.insertCell().innerHTML='<div align=center><input style=\"width:80px;height:20px;border:none\" class=inputstyle type=text maxlength=20 size=8 name=ARRIVE_SITUS class=border_index></div>';.tr.insertCell().innerHTML="<a href=javascript:void(0) class=\"shenpi2\"onclick=del('"+"tt"+count+"')>删除</a>";.count++;.}..//删除明细行....function del(aa){.document.all.tt.deleteRow(window.event.srcElement.parentElement.parentElement.rowIn dex);..}.//-->.</script>。
javascript实现Table行和列的拖动
javascript实现Table行和列的拖动Table表格拖动,既可以拖动行,也可以拖动列。
代码如下:Html代码1.<html>2.<head>3.<style>4..resizeDivClass5.{6.position:relative;7.width:4;8.z-index:1;9.left:expression(this.parentElement.offsetWidth - 3);10.cursor:e-resize;11.12.}13.14..resizeDivClass215.{16.position:relative;17.18.width:expression(this.parentElement.offsetWidth);19.height:1px;20.border: solid 0px;21.22.z-index:1;23.top:expression(this.parentElement.offsetHeight - 5);24.cursor:n-resize;25.}26.</style>27.28.<script language=javascript>29.30.function MouseDownToResize(obj)31.{32.obj.mouseDownX=event.clientX;33.obj obj.pareneTdW=obj.parentElement.offsetWidth;34.obj.pareneTableW=theObjTable.offsetWidth;35.obj.setCapture();36.}37.38.function MouseMoveToResize(obj)39.{40.if(!obj.mouseDownX)41.{42.return false;43.}44.var newWidth=obj.pareneTdW*1+event.clientX*1-obj.mouseDownX;45.if(newWidth>0)46.{47.obj.parentElement.style.width = newWidth;48.theObjTable.style.width=obj.pareneT ableW*1+event.cl ientX*1-obj.mouseDownX;49.}50.}51.function MouseUpToResize(obj)52.{53.obj.releaseCapture();54.obj.mouseDownX=0;55.}56.57.function MouseDownToResize2(obj)58.{59.obj.mouseDownY = event.clientY;60.obj.pareneTrH = obj.parentElement.offsetHeight;61.obj.pareneTableH=theObjTable.offsetHeight;62.obj.setCapture();63.}64.65.function MouseMoveToResize2(obj)66.{67.if(!obj.mouseDownY)68.{69.return false;70.}71.var newWidth = obj.pareneTrH * 1 + event.clientY * 1 - obj.mouseDownY;72.73.if(newWidth > 0)74.{75.obj.parentElement.style.height = newWidth;76.theObjTable.style.height = obj.pareneTableH * 1 + eve nt.clientY * 1 - obj.mouseDownY;77.}78.}79.80.function MouseUpToResize2(obj)81.{82.obj.releaseCapture();83.obj.mouseDownY=0;84.}85.86.</script>87.</head>88.89.<body>90.91.改变table的列宽度92.<table id=theObjT able STYLE=""border="1">93.<tr bgcolor=cccccc>94.<td valign=top>95.<div class="resizeDivClass"onMouseDown="MouseD ownToResize(this);"onMouseMove="MouseMoveToResize(this); "onMouseUp="MouseUpT oResize(this);"></div>96.aaa97.</td>98.<td valign=top>99.<div class="resizeDivClass"onMouseDown="MouseD ownToResize(this);"onMouseMove="MouseMoveToResize(this); "onMouseUp="MouseUpT oResize(this);"></div>ddd 100.</td>101.<td valign=top>102.<div class="resizeDivClass"onMouseDown="MouseD ownToResize(this);"onMouseMove="MouseMoveToResize(this); "onMouseUp="MouseUpT oResize(this);"></div>ddd 103.</td>104.</tr>105.106.<tr>107.<td valign=top>108.<div class="resizeDivClass2"onMouseDown="Mouse DownToResize2(this);"onMouseMove="MouseMoveT oResize2(t his);"onMouseUp="MouseUpT oResize2(this);"></div> 109.快乐不是因为拥有的多,而是计较的少。
jsp实现可编辑表格
jsp实现可编辑表格篇一:jsp+js实现可排序表格首先,定义一个js:tableSort.js:function sort(tableId, sortColumn,nodeT ype) {var table = document.getElementById(theT able);var tableBody = table.tBodies[0];var tableRows = tableBody.rows;var rowArray = new Array();for (var i = 0; i < tableRows.length; i++) {rowArray[i] = tableRows[i];}if (table.sortColumn == sortColumn) {rowArray.reverse();} else {rowArray.sort(generateCompareTR(sortColumn, nodeType));}var tbodyFragment = document.createDocumentFragment();for (var i = 0; i < rowArray.length; i++) {tbodyFragment.appendChild(rowArray[i]);}tableBody.appendChild(tbodyFragment);table.sortColumn = sortColumn;}function generateCompareTR(sortColumn, nodeType) { return function compareTR(trLeft, trRight) {var leftValue = convert(trLeft.cells[sortColumn].firstChild.nodeValue, nodeType);var rightValue = convert(trRight.cells[sortColumn].firstChild.nodeValue, nodeType);if (leftValue < rightValue) {return -1;} else {if (leftValue rightValue) {return 1;} else {return 0;}}};}function convert(value, dataType) {switch (dataType) {case int:return parseInt(value);case float:return parseFloat(value);case date:return new Date(Date.parse(value));default:return value.toString();}}然后是使用:<%@ page language=java import=java.util.* pageEncoding=UTF-8%<%String path = request.getContextPath();String basePath = request.getScheme() + ://+ request.getServerName() + : + request.getServerPort() + path + /;%<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN<html<head<base href=<%=basePath%<titleMy JSP 'tabel.jsp' starting page</title<meta http-equiv=pragma content=no-cache<meta http-equiv=cache-control content=no-cache<meta http-equiv=expires content=0<meta http-equiv=keywords content=keyword1,keyword2,keyword3 <meta http-equiv=description content=This is my page<!--<link rel=stylesheet type=text/css href=styles.css--<script type=text/javascript src=userjs/tableSort.js</script </head<body<table id=theT able align=center border=1<tr<td标题1</td<td onclick=sort(theT able,1,'int')标题2</td<td onclick=sort(theT able,2,'int')标题3</td<td onclick=sort(theT able,3,'int')标题4</td(转载于: 小龙文档网:jsp实现可编辑表格) <td onclick=sort(theT able,4,'int')标题5 </td<td onclick=sort(theT able,5,'int')标题6</td<td onclick=sort(theT able,6,'int')标题7</td</tr</thead<tbody<tr<td</td <td2</td <td3</td <td4</td <td5</td <td6</td <td7</td </tr <tr <td2</td <td3</td篇二:JQuery可编辑表格小结JQuery可编辑表格小结2010/11/23页面说明:JQuery源代码:jquery.js;CSS样式:style.css;可编辑表格的JS:table.js;jsp页面:index.jsp Jsp页面代码如下:<%@ page language=java import=java.util.* pageEncoding=utf-8% <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN <html<head<titleJQuery + Demo</title<link rel=stylesheet type=text/css href=style.css /<script type=text/javascript src=jquery.js</script<script type=text/javascript src=table.js</script</head<body<br/<br/<table<thead <tr <th colspan=2可编辑表格</th </tr </thead <tbody<tr<th编号</th <th 姓名</th </tr <tr <td00001</td <td张山</td </tr <tr<td00002</td <td李四</td </tr <tr<td00003</td <td王五</td </tr <tr<td赵六</td </tr </tbody</table</body</htmlCSS样式源代码:TABLE {}TABLE TD {}TABLE TH{}TBODY TH{}可编辑表格JS源代码:/***首先通过js来解决内容部分奇偶行的背景色不同*页面启动时加载:* $(document).ready(function(){});*///简便写法$(function(){//找到表格内容区域的所有奇数行//使用even是为了通过tbody tr 返回所有的tr元素,//在数组下标是偶数的元素返回,因为这些元素,//实际上才是我们期望的tbody里面的奇数行$('tbody tr:even').css('background-color','#ECE9D8'); //首先找到所有的编号单元格//$('tbodytd:even').css('background-color','red'); var aryTd = $('tbody td:even'); //给这些单元格注册鼠标点击事件background-color: blue; border: 1px solid black; width: 50% border: 1px solid black; cursor: hand; width: 50% border: 1px solid black; /**修正边框不能合并*/ border-collapse: collapse; width: 400px;function() {/*一般写法//找到当前鼠标点击的Td,this,就是对应相应click的td var tdObj = $(this); //创建一个文本框(创建一个节点)var inputObj = $('<input type=text /'); //去掉文本框的边框inputObj.css('border-width', '0'); //设置文本框中文字的大小inputObj.css('font-size','15px'); //是文本框的宽度和td的宽度相同inputObj.width(tdObj.width()); //设置文本框的背景色inputObj.css('background-color',tdObj.css('background-color')); //插入之前需要将当前td中的内容放置到文本框inputObj.val(tdObj.html()); //清空td中的内容tdObj.html(''); //插入一个文本框到td中inputObj.appendT o(tdObj); */ /*精简写法*/ //找到当前鼠标点击的Td,this,就是对应相应click的td var tdObj = $(this); /**虽然点击input不会错,但单击td还是会出差bug * 解决方法:判断td中是否有input*/ if(tdObj.children('input').length 0) { } //td中的文本内容:var text = tdObj.html(); //清空td中的内容tdObj.html(''); /** * 1、创建一个文本框(创建一个节点)* 2、去掉文本框的边框* 3、设置文本框中文字的大小* 4、文本框的宽度和td的宽度相同* 5、设置文本框的背景色* 6、插入之前需要将当前td中的内容放置到文本框* 7、插入一个文本框到td中return false;var inputObj = $('<input type=text /') .css('border-width', '0') .css('font-size',tdObj.css('font-size')) .width(tdObj.width()) .css('background-c olor',tdObj.css('background-color')) .val(text) .append T o(tdObj); //使文本框选中get(0)实际的DOM 元素,但此时在苹果浏览器中不能选中//inputObj.get(0).select(); /**原因:先获得焦点,后选中* 解决方法:用JQuery的返回值:事件处理*/ inputObj.trigger('focus').trigger('select 9;); //再次点击文本框,会有bug,是因为文本框属于TD,因此屏蔽文本框的click事件inputObj.click(); //处理文本框上回车和esc按键的操作inputObj.keyup( ); //处理文本框失去焦点inputObj.blur( function(event) { } //获得键值var keyCode = event.which; //处理回车if(13 == keyCode) { } //处理esc的情况if(27 == keyCode) {} //将td中的内容还原tdObj.html(text); //获取当前文本框中的内容var inputT ext = $(this).val(); tdObj.html(inputT ext); function() {} //返回false,停止传播return false;); } ); function() { } //获取当前文本框中的内容var inputT ext = $(this).val(); tdObj.html(inputT ext); //清除td下的文本框tdObj.remove('input');});小结:1.table中可以包含thead和tbody2.表头的内容放置在th中3.table{}这种写法称为标签选择器,可以对整个页面所有table产生影响。
jsp输出如下四行五列的表格
竭诚为您提供优质文档/双击可除jsp输出如下四行五列的表格篇一:jsp表格增加行//增加行functionaddRow(){//添加一行varmaintable=document.getelementbyid("yourtable");varnewtr=maintable.insertRow();varnewtd0=newtr.insertcell();varnewtd1=newtr.insertcell();//设置列内容和属性newtd0.innerhtml=""newtd1.innerhtml="";}//删除行functiondelRow(obj){vartr=this.getRowobj(obj);if(tr!=null){tr.parentnode.removechild(tr);}else{thrownewerror("thegivenobjectisnotcontainedbythetab le");}}利用js来动态创建表格有两种格式,appendchild()和insertRow、insertcell()。
但第一种有可能在ie上有问题,所以推荐使用第二种。
1、insertRow(index):index从0开始这个函数将新行添加到index的那一行前,比如insertRow(0),是将新行添加到第一行之前。
默认的insertRow()函数相当于insertRow(-1),将新行添加到表的最后。
一般我们在使用的时候都是:objtable.insertRow(objtable.rows.length)就是为表格objtable在最后新增一行。
insertcell()和insertRow的用法相同。
2、deleteRow(index):index从0开始删除指定位置的行,要传入的参数:index是行在表格中的位置,可以下面的方法取得然后去删除:varrow=document.getelementbyid("行的id");varindex=row.rowindex;//有这个属性objtable.deleteRow(index);在使用过程中,删除表格的行的时候,如果删除了某一行,那么表格行数是马上就变化的,rows.length总是在变小,所以如果你要删除表格的所有行:functionremoveallRow(){varobjtable=document.getelementbyid("mytable");varlength=objtable.rows.length;for(vari=1;i objtable.deleteRow(i);}}3、setattribute()方法,动态设置单元格与行的属性格式如下:setattribute(属性,属性值)varobjmytable=document.getelementbyid("mytable");objmytable.setattribute("border",1);//为表格设置边框为1在使用的时候遇到一个设置样式的问题,不能用setattribute("class","inputbox1");而应该使用setattribute("classname","inputbox1"),4、创建表格了解了行与单元格的增删那就可以创建表格了。
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
JS实现的表格操作类详解(添加,删除,排序,上移,下移)本⽂实例讲述了JS实现的表格操作类。
分享给⼤家供⼤家参考,具体如下:运⾏效果截图如下:点击此处查看。
具体代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style type="text/css">*{font-size:14px}button{margin:3px}</style><script type="text/javascript">var mytable=null,mytable2=null;window.onload=function(){mytable=new CTable("tbl",10);mytable2=new CTable("tbl2",6);}Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)}function $A(arrayLike){for(var i=0,ret=[];i<arrayLike.length;i++) ret.push(arrayLike[i]);return ret}Function.prototype.bind = function() {var __method = this, args = $A(arguments), object = args.shift();return function() {return __method.apply(object, args.concat($A(arguments)));}}function CTable(id,rows){this.tbl=typeof(id)=="string"?document.getElementById(id):id;if (rows && /^\d+$/.test(rows)) this.addrows(rows)}CTable.prototype={addrows:function(n){ //随机添加n个trnew Array(n).each(this.add.bind(this))},add:function(){ //添加1个trvar self=this;var tr = self.tbl.insertRow(-1),td1= tr.insertCell(-1),td2= tr.insertCell(-1),td3= tr.insertCell(-1);var chkbox=document.createElement("INPUT")chkbox.type="checkbox"chkbox.onclick=self.highlight.bind(self)td1.appendChild(chkbox)td1.setAttribute("width","35")td2.innerHTML=Math.ceil(Math.random()*99)td3.innerHTML=Math.ceil(Math.random()*99)},del:function(){ //删除所选trvar self=this$A(self.tbl.rows).each(function(tr){if (self.getChkBox(tr).checked) tr.parentNode.removeChild(tr)})},up:function(){ //上移所选trvar self=thisvar upOne=function(tr){ //上移1个trif (tr.rowIndex>0){self.swapTr(tr,self.tbl.rows[tr.rowIndex-1])self.getChkBox(tr).checked=true}}var arr=$A(self.tbl.rows).reverse()if (arr.length>0 && self.getChkBox(arr[arr.length-1]).checked){for(var i=arr.length-1;i>=0;i--){if (self.getChkBox(arr[i]).checked){arr.pop()}else{break}}arr.reverse().each(function(tr){if (self.getChkBox(tr).checked) upOne(tr)});},down:function(){var self=thisvar downOne=function(tr){if (tr.rowIndex<self.tbl.rows.length-1) {self.swapTr(tr,self.tbl.rows[tr.rowIndex+1]);self.getChkBox(tr).checked=true;}}var arr=$A(self.tbl.rows)if (arr.length>0 && self.getChkBox(arr[arr.length-1]).checked){for(var i=arr.length-1;i>=0;i--){if (self.getChkBox(arr[i]).checked){arr.pop()}else{break}}}arr.reverse().each(function(tr){if (self.getChkBox(tr).checked) downOne(tr)});},sort:function(){ //排序var self=this,order=arguments[0];var sortBy=function(a,b){if (typeof(order)=="number"){ //数字,则按数字指⽰的列排序return Number(a.cells[order].innerHTML)>=Number(b.cells[order].innerHTML)?1:-1; //转化为数字类型⽐较⼤⼩}else if (typeof(order)=="function"){ //为程序,按程序的返回结果排序return order(a,b);}else{return 1;}}$A(self.tbl.rows).sort(sortBy).each(function(x){var checkStatus=self.getChkBox(x).checked;self.tbl.firstChild.appendChild(x);if (checkStatus) self.getChkBox(x).checked=checkStatus;});},rnd:function(){ //随即选择⼏⾏trvar self=this,selmax=0,tbl=self.tbl;if (tbl.rows.length){selmax=Math.max(Math.ceil(tbl.rows.length/4),1); //选择的⾏数不超过tr数的1/4$A(tbl.rows).each(function(x){self.getChkBox(x).checked=false;self.restoreBgColor(x)})}else{return alert("⽆数据可以选")}new Array(selmax).each(function(){var tr=tbl.rows[Math.floor(Math.random()*tbl.rows.length)]self.getChkBox(tr).checked=true;self.highlight({target:self.getChkBox(tr)})})},highlight:function(){ //设置tr的背景⾊var self=this;var evt=arguments[0] || window.eventvar chkbox=evt.srcElement || evt.targetvar tr=chkbox.parentNode.parentNodechkbox.checked?self.setBgColor(tr):self.restoreBgColor(tr)},swapTr:function(tr1,tr2){ //交换tr1和tr2的位置var target=(tr1.rowIndex<tr2.rowIndex)?tr2.nextSibling:tr2;var tBody=tr1.parentNodetBody.replaceChild(tr2,tr1);tBody.insertBefore(tr1,target);},getChkBox:function(tr){ //从tr得到 checkbox对象return tr.cells[0].firstChild},restoreBgColor:function(tr){tr.style.backgroundColor="#ffffff"setBgColor:function(tr){tr.style.backgroundColor="#c0c0c0"}}function f(a,b){var sumRow=function(row){return Number(row.cells[1].innerHTML)+Number(row.cells[2].innerHTML)}; return sumRow(a)>sumRow(b)?1:-1;}</script></head><body><button onClick="javascript:mytable.rnd()">随机选择⾏</button><button onClick="javascript:mytable.add()">添加⼀⾏</button><button onClick="javascript:mytable.del()">删除选定⾏</button><button onClick="javascript:mytable.up()">上移选定⾏</button><button onClick="javascript:mytable.down()">下移选定⾏</button><button onClick="javascript:mytable.sort(1)">按第⼀列数字排序</button><button onClick="javascript:mytable.sort(f)">按每⾏数据的和排序</button><table width=100%><tr><td valign="top"><table border id="tbl" width="80%"></table></td><td valign="top"><table border id="tbl2" width="80%"></table></td></tr></table><button onClick="javascript:mytable2.rnd()">随机选择⾏</button><button onClick="javascript:mytable2.add()">添加⼀⾏</button><button onClick="javascript:mytable2.del()">删除选定⾏</button><button onClick="javascript:mytable2.up()">上移选定⾏</button><button onClick="javascript:mytable2.down()">下移选定⾏</button><button onClick="javascript:mytable2.sort(2)">按第⼆列数字排序</button><button onClick="javascript:mytable2.sort(f)">按每⾏数据的和排序</button></body></html>希望本⽂所述对⼤家JavaScript程序设计有所帮助。
sortable.js 拖动原理
sortable.js 拖动原理
sortable.js 是一个用于实现拖放排序功能的JavaScript库。
它的拖动原理主要涉及以下几个方面:
1. 拖动事件监听,sortable.js 通过监听鼠标或触摸事件来实现拖动功能。
当用户按下鼠标或触摸屏幕时,sortable.js 会捕获到相应的事件,并开始跟踪被拖动的元素。
2. 元素位置变化,在拖动过程中,sortable.js 会实时计算被拖动元素的位置,并根据鼠标或触摸的位置进行相应的调整。
这样就能实现元素随着拖动而移动的效果。
3. 拖动过程中的样式变化,为了提高用户体验,sortable.js 通常会在拖动过程中改变被拖动元素的样式,比如改变其透明度或添加阴影效果,以便让用户清楚地看到被拖动的元素位置。
4. 释放排序,当用户释放鼠标或触摸时,sortable.js 会根据最终的位置来确定被拖动元素的最终排序位置,并触发相应的排序事件,从而完成整个拖动排序的过程。
总的来说,sortable.js 的拖动原理就是通过事件监听、位置变化和样式改变来实现被拖动元素的实时拖动和排序功能。
这样的设计能够让开发者轻松地为网页添加拖动排序的功能,提升用户体验。
【原创】js实现一个可随意拖拽排序的菜单导航栏
【原创】js实现⼀个可随意拖拽排序的菜单导航栏1.想做这个效果的原因主要是⽤在UC上看新闻发现他们的导航菜单很有趣。
⽆聊的时候在哪划着玩了很久。
所以就⼲脆⾃⼰写⼀个。
原效果如下2.整体效果如下,在已推荐和未添加⾥⾯每个⼩⽅块可以触摸移动位置互换。
未添加和已添加⾥⾯的⼩⽅块位置可以拖放。
3.结构分析。
整体结构⽤红线框标出。
可以分为三个部分。
关注底部拖拽部分。
⼀个div⾥⾯嵌套两个div.定位关系如图。
本次教程之作⼀个拖拽框1.好了,基本情况已经分析清楚先实现页⾯样式。
<div class="wrap"><div class="menu ">财经</div><div class="menu ">时尚</div><div class="menu ">国际</div><div class="menu ">娱乐</div><div class="menu ">军事</div><div class="menu ">搞笑</div><div class="menu ">科技</div><div class="menu ">游戏</div><div class="menu ">体育</div><div class="menu ">美图</div><div class="menu ">推荐</div><div class="menu ">社会</div><div class="menu ">微信</div><div class="menu ">健康</div><div class="menu ">军事</div><div class="clear"></div></div>css<style type="text/css">*{margin: 0;padding: 0;}.clear{clear: both;}.wrap{width: 380px;height: auto;zoom: 1;overflow: hidden;border: 1px solid #8E8E8E;margin-top:100px ;margin-left: 400px;padding-bottom: 20px;position: relative;}.menu{width: 70px;height: 30px;background-color: cornflowerblue;color: #FFFFFF;font-size: 16px;text-align: center;line-height: 30px;float: left;margin-left: 20px;margin-top: 10px;} .active{height: 28px;width: 68px;border: 1px dashed #8E8E8E;float: left;margin-left: 20px;margin-top: 10px;}.onclick{transform: scale(1.2);position: absolute;background-color:cornflowerblue ;line-height: 30px;height: 30px;width: 70px;text-align: center;color: #FFFFFF;}</style>界⾯如下样式完成了现在开始写js。
如何在JSP页面中使用表格控件SpreadJS
如何在 JSP 页面中使用表格控件 SpreadJS
本文主要介绍 SpreadJS 在 JSP 中的使用方法。
ቤተ መጻሕፍቲ ባይዱ
1.新建一个 JSP 页面
<body> <div class="sample-turtorial"> <div id="ss" style="width:100%; height:580px;border: 1px solid gray;"></div> <div class="demo-options"> <div class="option-row"> <input type="button" style="width: 100px" value= "Add Sheet" id="btnAddSheet" /> <input type="button" style="width: 100px" value= "Remove Sheet" id="btnRemoveSheet" /> <input type="button" style="width: 100px" value= "Clear Sheets" id="btnClearSheets" /> </div> <div class="option-row"> <label>ActiveSheetIndex:</label> <input type="text" id="activeSheetIndex" value=" 0"/> <input type="button" id="btnSetActiveSheetIndex" value="Set" /> </div> </div> </div> </body>
js worksheet.move函数的用法
js worksheet.move函数的用法在JavaScript中,Worksheet.move函数是一个非常有用的工具,它可以帮助我们轻松地移动工作表中的单元格或行。
本文将详细介绍Worksheet.move函数的用法,帮助您更好地理解这个函数的作用和用法。
一、概述Worksheet.move函数用于将工作表中的单元格或行从一个位置移动到另一个位置。
它接受两个参数:要移动的单元格或行的起始位置和工作表的新位置。
通过使用Worksheet.move函数,您可以轻松地重新安排工作表中的数据,而无需手动复制和粘贴。
二、语法```javascriptworksheet.move(startCell,destination);```参数说明:*`startCell`:要移动的单元格或行的起始位置。
可以是单元格的引用或行号。
*`destination`:工作表的新位置。
可以是单元格的引用或行号。
例如,如果要将第2行第3列的单元格移动到第4行第2列的位置,可以使用以下代码:```javascriptworksheet.move(2,4,2,2);```三、示例下面是一个示例代码,展示了如何使用Worksheet.move函数将工作表中的单元格移动到新的位置:```javascript//创建新的工作表对象varworksheet=newWorksheet();//创建一些示例数据worksheet.write("A1","Hello");worksheet.write("A2","World");worksheet.write("B3","Foo");worksheet.write("B4","Bar");//将B3单元格移动到B5的位置worksheet.move("B3","B5");//输出移动后的数据console.log(worksheet.read());//输出:[['A1','Hello'],['A2','World'],['B5','Foo'],['B4','Bar']] ```在这个示例中,我们创建了一个新的工作表对象,并写入了一些示例数据。
element 树形拖拽表格
让我们来深入了解一下element树形拖拽表格的概念。
element是一款基于Vue.js的桌面端组件库,提供了丰富的组件,其中包括树形拖拽表格。
树形拖拽表格是一种常见的数据展示方式,它能够以树形结构展示数据,同时支持拖拽操作,为用户提供了更灵活的操作方式。
在使用element树形拖拽表格之前,我们首先需要明确什么是树形结构和拖拽操作。
树形结构是一种层次化的数据展示方式,通常用于展示具有父子关系的数据。
而拖拽操作则是指用户通过鼠标等方式将某个元素从一个位置拖拽到另一个位置的操作。
在实际应用中,树形拖拽表格通常用于展示具有层级关系的数据,比如组织架构、文件目录等。
它还能够支持用户对数据进行灵活的拖拽排序,从而更好地管理和操作数据。
接下来,让我们来探讨一下如何使用element树形拖拽表格。
我们需要在Vue.js项目中引入element组件库,并按照文档的引导对树形拖拽表格进行初始化和配置。
我们需要准备好数据源,确保数据源具有层级关系,并且每个数据节点都包含唯一的标识符。
我们可以根据实际需求,配置树形拖拽表格的样式、操作按钮等,从而实现对数据的展示和操作。
在使用过程中,element树形拖拽表格还提供了丰富的API和事件,我们可以根据实际需求对表格进行自定义操作,比如增加右键菜单、拖拽回调等。
这些功能使得树形拖拽表格更加灵活和强大。
在我的个人观点和理解方面,我认为element树形拖拽表格是一款非常实用和方便的组件。
它不仅能够满足常见的树形数据展示需求,还提供了灵活的拖拽操作,为用户提供了更便捷的操作体验。
在实际项目中,我曾经使用过element树形拖拽表格来展示产品分类和组织架构等数据,其灵活的配置和丰富的功能确实给我带来了很大的帮助。
element树形拖拽表格是一款功能强大、易于使用的组件,它为我们展示和操作树形数据提供了便利。
通过对其深入理解和灵活运用,我们能够更好地实现对数据的管理和展示,为用户带来更好的体验。
elementui中table表格拖拽排序
标题:深度探讨elementui中的table表格拖拽排序功能在现代网页应用程序开发中,表格是一个十分常见的UI组件。
在使用Vue.js框架时,Element UI是一个十分常用的组件库,其中的table 表格组件支持拖拽排序功能,大大提高了用户的交互体验。
本文将对Element UI中table表格拖拽排序功能进行深入探讨,以帮助读者更好地理解和应用这一功能。
一、了解Element UI中table表格的基本使用在谈论表格拖拽排序功能前,首先需要了解Element UI中table表格的基本使用方法。
在Vue.js中引入Element UI后,可以很方便地使用table组件来展示数据,实现分页、排序等功能。
使用table组件可以大大减少开发工作量,同时具有良好的扩展性和定制性。
二、介绍table表格拖拽排序功能的实现原理Element UI中的table表格拖拽排序功能是基于拖拽事件和数据重新排序来实现的。
通过监听拖拽事件,可以获取拖拽的起始位置和目标位置,然后重新排序表格中的数据,从而实现拖拽排序的效果。
这一功能的实现原理十分简单,但是在实际应用中却能带来极大的便利。
三、探讨table表格拖拽排序功能的应用场景table表格拖拽排序功能可以应用于各种需要对数据进行自定义排序的场景。
在后台管理系统中,管理员可能需要根据自己的需求对数据进行排序,这时拖拽排序功能就能够提供很大的帮助。
另外,在团队协作的应用中,也可以通过拖拽排序来调整任务的优先级或者其他数据的排列顺序。
四、如何在Element UI中使用table表格拖拽排序功能要在Element UI中使用table表格拖拽排序功能,首先需要在table组件上添加拖拽事件监听,然后在事件处理函数中实现数据的重新排序。
可以通过Vue.js框架提供的响应式数据和计算属性来实现数据的动态更新,并且可以结合Element UI提供的drag事件和sortable属性来实现拖拽排序功能。
vue拖拽--实现表格行和列的拖拽[sortable.js]---元素拖拽【vuedrag。。。
vue拖拽--实现表格⾏和列的拖拽[sortable.js]---元素拖拽【vuedrag。
【表格⾏列拖拽】vue+iview+sortable.js实现安装依赖cnpm install sortable.js --save组件⾥头引⼊import Sortable from'sortablejs'代码mounted() {this.rowDrop()this.columnDrop()},methods: {//⾏拖拽【iview组件】rowDrop() {const tbody = document.querySelector('.ivu-table-tbody')const that = thisconst len = that.tableDataList.lengthconsole.log(len)Sortable.create(tbody, {onEnd({ newIndex, oldIndex }) {const currRow = that.tableDataList.splice(oldIndex, 1)[0]that.tableDataList.splice(newIndex, 0, currRow)console.log(that.tableDataList)}})},//列拖拽【elment组件】columnDrop() {const wrapperTr = document.querySelector('.el-table__header-wrapper tr')this.sortable = Sortable.create(wrapperTr, {animation: 180,delay: 0,onEnd: evt => {const oldItem = this.tableCols[evt.oldIndex]this.dropCol.splice(evt.oldIndex, 1)this.dropCol.splice(evt.newIndex, 0, oldItem)}})},}【元素拖拽】vue拖拽【vuedraggable】安装依赖cnpm i -S vuedraggable组件⾥头引⼊import vuedraggable from'vuedraggable';代码vuedraggable参考链接 vue draggable 与 vue-dragging使⽤页⾯:export default {components:{draggable},methods:{datadragEnd(){console.log(this.wallList);}}},<draggable v-model="wallList"class="showWall" group="people" @update="datadragEnd" @start="drag=true" @end="drag=false"><div v-for="element in myArray" :key="element.id">{{}}</div></draggable>注:update相关⽅法调⽤后list会⾃⾏更新;并⽀持过渡动画,并可以⼿动配置;。
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Elementui表格组件+sortablejs实现⾏拖拽排序的⽰例代码前⾔运营⼩姐姐说想要可以直接拖拽排序的功能,原来在序号六的⼴告可能会因为⾦主爸爸加钱换到序号⼀的位置,拖拽操作就很⽅便效果实现⽅式template部分<el-tablev-loading="loading":default-sort="{prop: 'sortNum', order: 'ascending'}":data="list"borderalign="left"><el-table-columnshow-overflow-tooltipv-for="(item, index) in col":key="`col_${index}`":prop="col[index].prop":label="bel"><template slot-scope="scope"><p>{{scope.row[item.prop]}}</p></template></el-table-column></el-table>script部分import Sortable from 'sortablejs'export default {components: {Sortable},data() {return {col: [{label: '位置',prop: 'location'},{label: '序号',prop: 'sortNum'},{label: '经办⼈',prop: 'operator'},{label: '操作',prop: 'isClick'}]}},mounted() {this.rowDrop()},methods: {rowDrop() {const tbody = document.querySelector('.el-table__body-wrapper tbody')const _this = thisSortable.create(tbody, {onEnd({ newIndex, oldIndex }) {const currRow = _this.list.splice(oldIndex, 1)[0]_this.list.splice(newIndex, 0, currRow)_this.list = _this.list.filter(({ adId }) => adId !== 0)_this.list.forEach((item, index) => {_this.sortString += item.adId + ':' + (index + 1) + ','})_this.sortString = _this.sortString.substr(0, _this.sortString.length - 1)}})}}}完成!你们可以看得懂的!你可以你能⾏!以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<script language="javascript">
var beginMoving=false;
function MouseDownToMove(obj){
obj.style.zIndex=1;
obj.mouseDownY=event.clientY;
obj.mouseDownX=event.clientX;
beginMoving=true;
obj.setCapture();
}
function MouseMoveToMove(obj){
if(!beginMoving) return false;
obj.style.top = (event.clientY-obj.mouseDownY);
obj.style.left = (event.clientX-obj.mouseDownX);
}
function MouseUpToMove(obj){
if(!beginMoving) return false;
obj.releaseCapture();
obj.style.top=0;
obj.style.left=0;
obj.style.zIndex=0;
beginMoving=false;
var tempTop=event.clientY-obj.mouseDownY;
var tempRowIndex=(tempTop-tempTop%25)/25;
if(tempRowIndex+obj.rowIndex <0 )tempRowIndex=-1;
else tempRowIndex=tempRowIndex+obj.rowIndex;
if(tempRowIndex >= obj.parentElement.rows.length-1) tempRowIndex =
obj.parentElement.rows.length-1;
obj.parentElement.moveRow(obj.rowIndex,tempRowIndex);
}
</script>
<TABLE WIDTH="300" BORDER="1" >
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表1</TD></TR>
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表2</TD></TR>
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表3</TD></TR>
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表4</TD></TR>
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表5</TD></TR>
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)'
onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表6</TD></TR>
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表7</TD></TR>
<TR style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'><TD>表8</TD></TR>
</TABLE>。