用js来排序,可以实现吗?

szjq 2006-11-13 03:34:41
我现在有两个select框,属性是multiple,选中左边一栏里的项目可以复制到右边原先空的select框里,如果复制好多条过去后,我想对复制到右边复选框的项排序,就是升序和降序排列,有人实现过这样的功能吗???
...全文
659 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
szjq 2006-11-13
  • 打赏
  • 举报
回复
太谢谢大家了,解决问题了
myvicy 2006-11-13
  • 打赏
  • 举报
回复
一个建议:记录当前排序状态,你在增加时根据当前排序状态直接判断加入的位置。
其余升降序仍按上面各位兄弟的调试。
btbtd 2006-11-13
  • 打赏
  • 举报
回复
啰嗦一下, 我发现要兼容好点, 用 DOM 是一个好路子.
btbtd 2006-11-13
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- DW6 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>shawl.qiu template</title>
<script type="text/javascript">
//<![CDATA[
function fDomSleOdr(obj, sort){
if(!obj)return false;
var o=obj.getElementsByTagName('option');
if(sort=='down'){
for(var i=0; i<o.length; i++){
for(var k=0; k<o.length; k++){
if(o[k].firstChild.data>o[i].firstChild.data){
obj.insertBefore(o[i], o[k]);
}
}
}
} else {
for(var i=0; i<o.length; i++){
for(var k=0; k<o.length; k++){
if(o[k].firstChild.data<o[i].firstChild.data){
obj.insertBefore(o[i], o[k]);
}
}
}
} // shawl.qiu script
}
//]]>
</script>
</head>
<body>
<select id="sle" multiple="multiple" size="8" >
<option>z</option>
<option>a</option>
<option>b</option>
<option>e</option>
<option>x</option>
<option>d</option>
<option>c</option>
<option>f</option>
</select><br />
<button onclick="fDomSleOdr(document.getElementById('sle'), 'down')">降序</button>
<button onclick="fDomSleOdr(document.getElementById('sle'), 'up')">升序</button>
</body>
</html>
JK_10000 2006-11-13
  • 打赏
  • 举报
回复
以下示例,仅通过ie5.5+测试:

左右移动进行选取,以及选中后上下移动
http://jkisjk.spaces.live.com/blog/cns!758CACE25E89DD3B!355.entry
szjq 2006-11-13
  • 打赏
  • 举报
回复
并且select框属性是multiple,这样就可以多选了,然后再对复制到右边精选框的option排序,有没有完整程序,谢谢
szjq 2006-11-13
  • 打赏
  • 举报
回复
我的页面上是两个select框,把左边显示的option项选中之后,双击可以复制到右边的select框里,然后右边的select框有两个按钮,用来做升降序排列
hbhbhbhbhb1021 2006-11-13
  • 打赏
  • 举报
回复
<select name="aa">
<option value="11">111</option>
<option value="33">333</option>
<option value="22">222</option>
</select>
<script language=javascript>
var obj=document.getElementById("aa")
var objs=obj.options
var a=new Array();
for(var i=0;i<objs.length;i++)
{
a[a.length]=new Array(objs[i].value,objs[i].text)
}
a.sort();
objs.length=0;
for(var i=0;i<a.length;i++)
{
objs[i]=new Option(a[i][0],a[i][1])
}
</script>
xxuu503 2006-11-13
  • 打赏
  • 举报
回复
Microsoft(R) JScript(R)
sort 方法 语言参考
版本 2


请参阅 应用于


--------------------------------------------------------------------------------

描述
返回一个元素已经进行了排序的 Array 对象。

语法
arrayobj.sort(sortfunction)
sortfunction 参数是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

说明
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。
如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
下面这个例子说明了 sort 方法的用法:

function SortDemo()
{
var a, l;
a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
l = a.sort();
return(l);
}


--------------------------------------------------------------------------------

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧