如果里面是执行str+="";的话
建议用Arrayvar s="";
var arr=new Array();
for(var i=0;i<10000;i++){
arr.push("aaaaaaaa");
}
s=arr.join("");如果是操作Array
看这个帖子:
http://hi.baidu.com/yoyobp/blog/item/25848954fc9c501f3a29351a.html
建议用Arrayvar s="";
var arr=new Array();
for(var i=0;i<10000;i++){
arr.push("aaaaaaaa");
}
s=arr.join("");如果是操作Array
看这个帖子:
http://hi.baidu.com/yoyobp/blog/item/25848954fc9c501f3a29351a.html
for
for...
几万次?
可以先把select隐藏掉,再执行你的程序,执行完再显示,select这个东西这样执行会快很多
循环的过程中注意别潜逃太深,最好给些代码我们好调试
{
//alert(iCategoryID);
var obj = NoticeEdit.News_UserMaster.GetBelong1Result(iCategoryID);
if(obj.value != null)
{
document.all("lbxleft").length = 0;
var ds=obj.value;
if(ds != null && typeof(ds) == "object" && ds.Tables != null)
{
for(var i=0;i<ds.Tables[0].Rows.length;i++)
{
var name = ds.Tables[0].Rows[i].EmployeeName;
var id = ds.Tables[0].Rows[i].EmployeeCode;
document.all("lbxleft").options.add(new Option(name,id));
}
}
else
{}
}
}
document.all("lbxleft")这里也有,要改下
{
var name = ds.Tables[0].Rows[i].EmployeeName;
var id = ds.Tables[0].Rows[i].EmployeeCode;
document.all("lbxleft").options.add(new Option(name,id));
}
主要是这段
var objRowsLength=objRows.length
var objlbxleft=document.all("lbxleft").options
for(var i=0;i<objRowsLength;i++)
{
var name = objRows[i].EmployeeName;
var id = objRows[i].EmployeeCode;
objlbxleft.add(new Option(name,id));
}
{
//var name = ds.Tables[0].Rows[i].EmployeeName;
//var id = ds.Tables[0].Rows[i].EmployeeCode;
document.all("lbxleft").options.add(new Option(ds.Tables[0].Rows[i].EmployeeName,ds.Tables[0].Rows[i].EmployeeCode));
}
还是不行
{
document.all("lbxleft").options.add(new Option(ds.Tables[0].Rows[i].EmployeeName,ds.Tables[0].Rows[i].EmployeeCode));
}
只要你的语句中有上述单个的循环和DOM操作,速度别想提多少
for(var i=0;i<l;i++)
{
//var name = ds.Tables[0].Rows[i].EmployeeName;
//var id = ds.Tables[0].Rows[i].EmployeeCode;
document.all("lbxleft").options.add(new Option(ds.Tables[0].Rows[i].EmployeeName,ds.Tables[0].Rows[i].EmployeeCode));
}
for(var i=0;i<l;i++)
{
var obj=ds.Tables[0].Rows[i];
//var name = ds.Tables[0].Rows[i].EmployeeName;
//var id = ds.Tables[0].Rows[i].EmployeeCode;
document.all("lbxleft").options.add(new Option(obj.EmployeeName,objEmployeeCode));
}
<script language=javascript>
function OpenDocument(iCategoryID)
{
//alert(iCategoryID);
var obj = document.getElementById(iCategoryID);
if(obj.value != null)
{
var ds=obj.value;
if(1==1)
{
var temp=new Array();
temp[0]='<select name="lbxleft">'
for(var i=0;i<10000;i++)
{
var name = i;
var id = i;
temp[temp.length]="<option value='"
temp[temp.length]=id
temp[temp.length]="'>"
temp[temp.length]=name
temp[temp.length]="</option>"
}
temp[temp.length]="</select>"
document.all("lbxleft").outerHTML=temp.join("");
}
else
{}
}
}
</script>
<select name="aaa" onchange=OpenDocument(this.name)>
<option value="bbb">bbb</option>
<option value="ccc">ccc</option>
</select>
<select name="lbxleft"></select>
下面的代码会比上面的快一点
<script language=javascript>
function OpenDocument(iCategoryID)
{
var a=new Date()
//alert(iCategoryID);
var obj = document.getElementById(iCategoryID);
if(obj.value != null)
{
var ds=obj.value;
if(1==1)
{
var temp=new Array();
temp[0]='<select name="lbxleft">'
for(var i=0;i<10000;i++)
{
var name = i;
var id = i;
temp[temp.length]="<option value='"+id+"'>"+name+"</option>"
/*temp[temp.length]=id
temp[temp.length]="'>"
temp[temp.length]=name
temp[temp.length]="</option>"
*/
}
temp[temp.length]="</select>"
document.all("lbxleft").outerHTML=temp.join("");
}
else
{}
}
document.getElementById("div1").innerHTML=new Date()-a
}
</script>
<select name="aaa" onchange=OpenDocument(this.name)>
<option value="bbb">bbb</option>
<option value="ccc">ccc</option>
</select>
<select name="lbxleft"></select>
<div id="div1"></div>
不过 效率上来说 objlbxleft.add(new Option(name,id)); 是比较慢
可以考虑用 innerHTML的方式,楼上hbhbhbhbhb1021(天外水火(我要多努力)) 的方式,先拼装成html的字符串,然后 用innerHTML方式生成是相对比较快的
function test()
{
//do something
setTimeout("test",10);
}
这样不会造成拥堵,但是载入会比较慢
运行一个月的循环都不会死掉。
---------------------------
惊爆支持ASP、ASP.NET2.0空间500M+SQL数据库100M 特惠价格:128一年
http://www.myidc.info/webhost/stylehost.aspx