TRY:
<div id="dv"> </div><p>
<script language="javascript">
var obj = new Array();
for(i=0;i<7000;i++){
obj[i] = "<option value=\""+i+"\">opt "+i+"</option>";
}
var selectstr = "<select id=\"st\" size=\"20\" style=\"width:80%\" multiple>"+obj.join('')+"</select>"
dv.innerHTML = selectstr;function selectAllA(obj){
var n = obj.children.length;
for(var b=0;b<n;b++){
obj.children[b].selected = true;
}
}function selectAllB(obj){
var oldstr = obj.outerHTML;
var reg = /<option/ig;
var newstr = oldstr.replace(reg,"<option selected");
dv.innerHTML = newstr;
}</script>
<p>
<input type="button" value="Select All A" onclick="selectAllA(st);">
<input type="button" value="Select All B" onclick="selectAllB(st);">
<div id="dv"> </div><p>
<script language="javascript">
var obj = new Array();
for(i=0;i<7000;i++){
obj[i] = "<option value=\""+i+"\">opt "+i+"</option>";
}
var selectstr = "<select id=\"st\" size=\"20\" style=\"width:80%\" multiple>"+obj.join('')+"</select>"
dv.innerHTML = selectstr;function selectAllA(obj){
var n = obj.children.length;
for(var b=0;b<n;b++){
obj.children[b].selected = true;
}
}function selectAllB(obj){
var oldstr = obj.outerHTML;
var reg = /<option/ig;
var newstr = oldstr.replace(reg,"<option selected");
dv.innerHTML = newstr;
}</script>
<p>
<input type="button" value="Select All A" onclick="selectAllA(st);">
<input type="button" value="Select All B" onclick="selectAllB(st);">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><body>
<form name=formA>
<input name=selectall type=checkbox onclick="document.getElementById('com_selected').style.visibility='hidden';setTimeout('checkall(document.formA);',10)" >
<select name=com_selected multiple size=10 >
<script>
for(var i=0;i<7000;i++)
document.write("<option value=1>"+i+"</option>");
</script>
</select>
</form>
</body></html><script>
function checkall(form)
{
var mlist = document.getElementById('com_selected');
var mlistOptions=mlist.options;
var trueOrFalse=form.selectall.checked;
for(var i=mlistOptions.length-1;i>-1;i--)
{
mlistOptions[i].selected=trueOrFalse;
}
mlist.style.visibility="";
}
</script>
var e=mlist.options[i];
e.selected=form.selectall.checked;
//mlist.options可以拿到循环外取
//form.selectall.checked也可以拿到循环外取
2。select是个怪胎,可以先把它隐藏再改option的选中状态,改完后再显示select,以减少显示时间
本身就是一件“不可接受”的事。
不过select是个怪胎
隐藏是为了减少边运行边显示所花的时间
to JK_10000(JK) , select有七千个选项的确是可操作性不强,不过这个界面本来就是这样,暂时不能大改,所以还要顶一阵子。