自己写很痛苦的,而且还要处理不同浏览器的兼容问题,建议你还是作用JS框架。。EXTjs吧
如果你真要自己写,我愿意讲下我的思路。
首先假设有一个rowUp(trId,rowcounts)方法 ,和一个rowDown(trId,rowcounts)方法,参数是某行的tr的id,参数二是要移动的行数,或者你不用table,用DIV也行。
我会把每行数据看作一个对象,当这个对象中的某个ID需要rowUp/rowDown的时候,我就调这个td的parent的rowUp/rowDown函数
现在再研究下,怎么确定这行要上还是要下
还是用TABLE举例,如果我排序的是第三列,那就应该迭代table的第三列所有td元素,取里面的值,然后进行排序,排序的时候可以 这样做:
假设第一行是3,第二行是1,那么,1这一行可能要放到第一行,
所以它是上移一行那应该调用 函数rowUp(trId_2,1)
这样一直迭代下去。我这只是拿冒泡排序(应该是冒泡吧,我不记得名称了,不用在意这些细节)的思路走的,如果你有更好的算法,可以不用我这个算法思路。。
<html><meta http-equiv="content-type" content="text/htmlcharset=gb2312" />
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script language="JavaScript" type="text/javascript">
function get(obj) {
var obj = document.getElementById("qx").value
var obj = obj.split('\n')
var i = 0
var arr_all = new Array()
var exists = document.getElementById('a').childNodes
for (var j=0j<exists.lengthj++) {
if (exists[j].nodeName == 'DIV') {
var exist_url = exists[j].firstChild.nextSibling.value
var exist_name = exists[j].lastChild.previousSibling.innerHTML
var exist = exist_url + '|' + exist_name
arr_all.push(exist, arr_all)
}
}
for (i = 0i <obj.lengthi++) {
obj[i] = trim(obj[i])
if (obj[i] == '') {
continue
}
if (in_array(obj[i], arr_all)) {
continue
}
arr_all.push(obj[i])
var name = obj[i].split("|")[1]
var url = obj[i].split("|")[0]
var iht = ''
iht += '<div><span>上移</span><span>下移</span><input size=80 value='+url+' /><span>'+name+'</span>'
iht +='<input type="button" value=" 删除 " class="inputbtn" onclick="deleteNum(this)" /></div><br>'
document.getElementById("a").innerHTML+=iht
}
document.getElementById("qx").value=""
}
function deleteNum(obj) {
obj.parentNode.parentNode.removeChild(obj.parentNode.nextSibling)
obj.parentNode.parentNode.removeChild(obj.parentNode)
}
function trim(string) {
return string.replace(/(^\s*)|(\s*$)/g, "")
}
function in_array(stringToSearch, arrayToSearch) {
for (s = 0s <arrayToSearch.lengths++) {
thisEntry = arrayToSearch[s].toString()
if (thisEntry == stringToSearch) {
return true
}
}
return false
}
$(document).ready(function() {
//$("div[name=spanFor]").draggable()
$("#a").draggable({axis:'y',grid:[0,20],containment:'parent'})
})
</script>
</head>
<body>
<div id = "a" ></div>
<textarea name="fbaddress" cols="100" rows="5" id="qx">19880101|名字1
19880102|名字2
19880103|名字3
19880104|名字3</textarea>
<input type="button" name="Submit1" value=" 编号 " onclick="get()" class="inputbtn" /><br>
在保证别的功能不变的情况下 实现上移下移
</body>
</html>