是浏览器端的<table>的列里的中文排序么?
解决方案 »
- 修改jar里代码;求教最后一步如何生成jar
- 汗,不会正则
- 登录时候 怎么加密解密啊
- freemaker 枚举 比较
- 要出国了,给点推荐吧
- servlet的manager 下打不开文件目录
- ueditor+ struts2 图片和附件上传配置 求大神帮忙
- 在Eclipse中开发Struts
- 学java好久,没有做过很大的东西?大峡给点意见。。送分100
- 大家说说在linux下和在windows开发java(j2ee)哪个更流行、更好?
- 100分急求:Positional parameter does not exist
- 寻ireport高手, 打印excel有问题(ireport中字段占多列)?
<script language=javascript>
var arr1=new Array(["实用",6,"abc"],["编程",5,"abcd"],["技术",8,"bcd"],["实战",4,"cde"],["精通",2,"efg"],["教程",-9,""]);
function mysort2007(arr,sorttype,colmnindex)
{
switch(sorttype)
{
case 1://汉字排序
function spellSort(a,b){
var i,p,q,l=strGB.length;
p=0;for(i=a[colmnindex].length;i>0;i--)p=p/l+strGB.indexOf(a[colmnindex].substr(i-1,1))
q=0;for(i=b[colmnindex].length;i>0;i--)q=q/l+strGB.indexOf(b[colmnindex].substr(i-1,1))
return p-q;
}
arr.sort(spellSort);
break;
case 2://数值排序
function valueSort(a,b){
if(parseFloat(a[colmnindex])==parseFloat(b[colmnindex])) return 0;
else if(parseFloat(a[colmnindex])>parseFloat(b[colmnindex])) return 1;
else return -1;
}
arr.sort(valueSort);
break;
case 3://字符串排序
function stringSort(a,b){
return a[colmnindex].localeCompare(b[colmnindex]);
}
arr.sort(stringSort);
break;
}
alert(arr);
}
mysort2007(arr1,1,0);
mysort2007(arr1,2,1);
mysort2007(arr1,3,2);
</script>//----------
GB2312.jsvar strGB="啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋
省略,这个可以下载到的,有些大,发不了
function UrlEncode(str){
/*********qiushuiwuhen(2002-9-16)********/
var i,c,p,q,ret="",strSpecial="!\"#$%&'()*+,/:;<=>?@[\]^`{|}~%";
for(i=0;i<str.length;i++){
if(str.charCodeAt(i)>=0x4e00){
var p=strGB.indexOf(str.charAt(i));
if(p>=0){
q=p%94;
p=(p-q)/94;
ret+=("%"+(0xB0+p).toString(16)+"%"+(0xA1+q).toString(16)).toUpperCase();
}
}
else{
c=str.charAt(i);
if(c==" ")
ret+="+";
else if(strSpecial.indexOf(c)!=-1)
ret+="%"+str.charCodeAt(i).toString(16);
else
ret+=c;
}
}
return ret;
}function getSpell(str,sp){
/*********qiushuiwuhen(2002-9-16)********/
var i,c,t,p,ret="";
if(sp==null)sp="";
for(i=0;i<str.length;i++){
if(str.charCodeAt(i)>=0x4e00){
p=strGB.indexOf(str.charAt(i));
if(p>-1&&p<3755){
for(t=qswhSpell.length-1;t>0;t=t-2)if(qswhSpell[t]<=p)break;
if(t>0)ret+=qswhSpell[t-1]+sp;
}
}
}
return ret.substr(0,ret.length-sp.length);
}
我给出我自己实现排序的代码,columnIndex是列序号,sortType为排序类型,sortFlag排序是升序还是降序
var clientSort=function(columnIndex,sortType,sortFlag){
//alert("before sort:"+tempArray)
//alert("col:"+columnIndex);
//alert("sort:"+sortType);
//alert("flag:"+sortFlag);
if(sortType=="1"){//字符串排序
function stringSort(a,b){
return a[columnIndex].localeCompare(b[columnIndex])*sortFlag;
}
tempArray.sort(stringSort);
} else if(sortType=="2"){//数值排序
function floatSort(a,b){
if(parseFloat(a[columnIndex])==parseFloat(b[columnIndex])) return 0;
else if(parseFloat(a[columnIndex])>parseFloat(b[columnIndex])) return sortFlag;
else return -1*sortFlag;
}
tempArray.sort(floatSort);
} else {
alert("您指定的sortType非法!");
}
var rowCount=tableBody.childNodes.length;
//alert("after sort:"+tempArray)
for(var i=0;i<rowCount;i++){
tableBody.appendChild(tempArray[i][tempArray[i].length-1]);
}
}
是表格里数据是中文的。
mihaisheng
你的这个我试试看,
在此先谢过
this.fillArray=function(){
var rowCount=tableBody.childNodes.length;
for(var i=0;i<rowCount;i++){
var columnCount=tableBody.childNodes[i].childNodes.length;
tempArray[i]=new Array();
for(var j=0;j<columnCount;j++){
//alert(tableBody.childNodes[i].childNodes[j].innerHTML);
tempArray[i][j]=tableBody.childNodes[i].childNodes[j].innerText
}
tempArray[i][columnCount]=tableBody.childNodes[i];
}
alert(tempArray);
//contextChanged=false;
}
这个二维数组的每一个元素对应表格的每一个单元格的内容,但需要注意的是,这个二维数组会多出来一列,这一列存放的是表格的每一行对应的对象。这样做的好处在于,在表格内容不变的情况下,第二次排序的时候,就不必重新填充二维数组,数组中最后一列在排序过后,也恰好是表格应有的顺序。
你的方法我试了。
对于多音字好像就不大好使了。比如说“重庆”。
最近忙的没有及时过来看帖。实在不好意思。
今天把帖给结了。
但是遗留了一个问题。
问题是:如果现在表格中内容是不确定的,(不知道是中文还是英文,如果两者都有的话,好像也有点小问题,我也在想办法解决这个。不过没有什么思路,改天还得请教你。)
用什么方式解决(如何兼容的问题)。
function moveSwap() {
var newToArray = $('tbody').sortable('toArray');
$.each(newToArray, function (i) {
if (i == 0) {
$('#' + newToArray[i]).find('.up').addClass("up_no").removeClass("up_c");
$('#' + newToArray[i]).find('.down').addClass("down_c").removeClass("down_no");
}
else if (i == newToArray.length - 1) {
$('#' + newToArray[newToArray.length - 1]).find('.down').addClass("down_no").removeClass("down_c");
$('#' + newToArray[newToArray.length - 1]).find('.up').addClass("up_c").removeClass("up_no");
}
else {
$('#' + newToArray[i]).find('.down').addClass("down_c").removeClass("down_no");
$('#' + newToArray[i]).find('.up').addClass("up_c").removeClass("up_no");
}
});
} /* 拖动排序停止 */
$('tbody').sortable({stop:function (e, ui) {
moveSwap();
}});
function udSwap() {
var newToArray = $('tbody').sortable('toArray');
$.each(newToArray, function (i) {
if (newToArray.length == 1) {
$('#' + newToArray[0]).find('.down').addClass('down_c').removeClass('down_no');
$('#' + newToArray[0]).find('.up').addClass("up_c").removeClass('up_no');
} else if (newToArray.length == 2) {
$('#' + newToArray[0]).find('.down').removeClass("down_no").addClass('down_c');
$('#' + newToArray[0]).find('.up').addClass("up_no").addClass('up_c');
$('#' + newToArray[1]).find('.up').addClass("up_c").removeClass('up_no');
$('#' + newToArray[1]).find('.down').removeClass("down_c").addClass('down_no');
} else if (i == 0) {
$('#' + newToArray[i]).find('.up').addClass("up_no").removeClass('up_c');
$('#' + newToArray[i]).find('.down').addClass("down_c").removeClass('down_no');
}
else if (i == newToArray.length - 1) {
$('#' + newToArray[i]).find('.down').addClass("down_no").removeClass('down_c');
$('#' + newToArray[i]).find('.up').addClass("up_c").removeClass('up_no');
}
else {
$('#' + newToArray[i]).find('.down').removeClass("down_no").addClass('down_c');
$('#' + newToArray[i]).find('.up').removeClass("up_no").addClass('up_c');
}
});
}
/* 上移 */
$('.up').click(
function () {
$(this).parents("tr").prev().before($(this).parents("tr"));
udSwap();
}
);
/* 下移 */
$('.down').click(
function () {
$(this).parents("tr").next().after($(this).parents("tr"));
udSwap();
}
);
/* 执行排序 */
udSwap(); }