87,997
社区成员




<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>shawl.qiu template</title>
<style type="text/css">
/* <![CDATA[ */
/* ]]> */
</style>
</head>
<body>
<form>
<select id="Sle" multiple="multiple" size="20" >
<option>z</option>
<option>a</option>
<option>b</option>
<option>e</option>
<option>x</option>
<option>d</option>
<option>c</option>
<option>f</option>
<option value="9">cat 9</option>
<option value="10">cat 10</option>
<option value="6">cat 6</option>
<option value="7">cat 7</option>
<option value="8">cat 8</option>
<option value="9">cat 9</option>
<option value="10">cat 10</option>
<option value="6">cat 6</option>
<option value="7">cat 7</option>
<option value="3">cat 3</option>
<option value="8">cat 8</option>
</select><br />
<button type="button" id="UpSort">升序</button>
<button type="button" id="DownSort">降序</button>
</form>
<style type="text/css">
/* <![CDATA[ */
/* ]]> */
</style>
<script type="text/javascript">
//<![CDATA[
var GCount = 1;
var UpSort = document.getElementById("UpSort");
var DownSort = document.getElementById("DownSort");
var Sle = document.getElementById("Sle");
UpSort.onclick = function(e)
{
var Sle = document.getElementById("Sle");
fOptionSortor(Sle, "up");
document.title = GCount++;
};
DownSort.onclick =
function(e)
{
var Sle = document.getElementById("Sle");
fOptionSortor(Sle, "down")
document.title = GCount++;
};
fOptionSortor(Sle, "up");
//fOptionSortor(Sle, "down");
function fOptionSortor(oSelect, sSort)
{/* shawl.qiu code, void return, Func: fStringCompareAlg */
if(!oSelect)return false;
if(!sSort) sSort = 'down';
var o = oSelect.getElementsByTagName('option');
if(sSort == 'up')
{
for(var i = 0; i < o.length; i++ )
{
for(var k = 0; k < o.length; k++ )
{
//alert(o[i].firstChild.data)
if(fStringCompareAlg(o[k].firstChild.data, o[i].firstChild.data)>0)
{
oSelect.insertBefore(o[i], o[k]);
break;
}
}
}
}
else
{
for(var i = 0; i < o.length; i++ )
{
for(var k = 0; k < o.length; k++ )
{
if(fStringCompareAlg(o[k].firstChild.data, o[i].firstChild.data)<0)
{
oSelect.insertBefore(o[i], o[k]);
break;
}
}
}
}
}/* function fOptionSortor(oSelect, sSort) */
function fStringCompareAlg(S1, S2)
{/* shawl.qiu code, return ternary logic(-1, 0, 1)*/
var Re = /[0-9]/;
if(Re.test(S1)&&Re.test(S2))
{
var bHasSamePos = false, S1Len = S1.length, S2Len = S2.length, Len = S1Len;
if(Len<S2Len) Len = S2Len;
for(var i=0; i<Len; i++)
{
if(i>=S1Len||i>=S2Len) break;
var S1Char = S1.charAt(i), S2Char = S2.charAt(i);
if(Re.test(S1Char)&&Re.test(S2Char))
{
var iS1 = parseInt(S1.slice(i)), iS2 = parseInt(S2.slice(i));
var PreS1 = S1.slice(0, i), PreS2 = S2.slice(0, i);
if(PreS1!=PreS2) return S1.localeCompare(S2);
if(iS1>iS2) return 1; else if(iS1<iS2) return -1; else return 0;
}
}
return S1.localeCompare(S2);
}
else{ return S1.localeCompare(S2);}
}/* function fStringCompareAlg(S1, S2) */
//]]>
</script>
</body>
</html>
<select id="cs" multiple="multiple">
<option>a</option>
<option>b</option>
</select>
<script type="text/javascript">
var a = document.getElementById('cs');
var d = a.getElementsByTagName('option');
a.insertBefore(d[1], d[0]);
</script>
呵呵,完全是select对象的BUG...
在最后面加一个
oSelect.options[0] = oSelect.options[0];
就可以刷新它的显示了..
如果有可能没有[0]
那么判断下
oSelect.options[0] && (oSelect.options[0] = oSelect.options[0]);
^^好啦...
飘走..
function fOptionSortor(oSelect, sSort)
{/* shawl.qiu code, void return, Func: fStringCompareAlg */
if(!oSelect)return false;
if(!sSort) sSort = 'down';
var o = oSelect.getElementsByTagName('option');
if(sSort == 'up')
{
for(var i = 0; i < o.length; i++ )
{
for(var k = 0; k < o.length; k++ )
{
if(fStringCompareAlg(o[k].firstChild.data, o[i].firstChild.data)>0)
{
oSelect.insertBefore(o[i], o[k]);
break;
}
}
}
}
else
{
for(var i = 0; i < o.length; i++ )
{
for(var k = 0; k < o.length; k++ )
{
if(fStringCompareAlg(o[k].firstChild.data, o[i].firstChild.data)<0)
{
oSelect.insertBefore(o[i], o[k]);
break;
}
}
}
}
oSelect.options[0] = oSelect.options[0]; //刷新IE7的显示
}/* function fOptionSortor(oSelect, sSort) */