/* *给当前的select元素排序, *@ param selectObj:当前的select元素 *@ param sortType:排序类型 desc:降序 asc:升序 */ function sort(selectObj,sortType){ var optionsObj=selectObj.options; var optionsLength=optionsObj.length; var exchang; var tempValue1; var tempValue2; if(StringUtils.isBlank(sortType)){ sortType="desc"; } if(sortType=="desc"){ // 降序 for (i = 0; i < optionsLength; i++) //最多做R.Length-1趟排序 { exchange = false; //本趟排序开始前,交换标志应为假 for (j =optionsLength-2; j >= i; j--) { tempValue1=optionsObj[j + 1].text; tempValue2=optionsObj[j].text if (tempValue1.localeCompare(tempValue2)>0) //<0说明tempValue1大于tempValue2 { // alert("降交换==="+tempValue1+"--------"+tempValue2); optionsObj[j].swapNode(optionsObj[j+1]); exchange = true; //发生了交换,故将交换标志置为真 } } if (exchange==false) //本趟排序未发生交换,提前终止算法 { break; } } }else{ //升序 for (i = 0; i < optionsLength; i++) //最多做R.Length-1趟排序 { exchange = false; //本趟排序开始前,交换标志应为假 for (j =optionsLength-2; j >= i; j--) { tempValue1=optionsObj[j + 1].text; tempValue2=optionsObj[j].text if (tempValue1.localeCompare(tempValue2)<0) //<0说明tempValue1小于tempValue2 { // alert("升交换==="+tempValue1+"--------"+tempValue2); optionsObj[j].swapNode(optionsObj[j+1]); exchange = true; //发生了交换,故将交换标志置为真 } } if (exchange==false) //本趟排序未发生交换,提前终止算法 { break; } } } }
主要的知识点:localeCompare :实现按照中文音序排序
swapNode在option对象上的使用