<HTML>
<HEAD>
<script language="JavaScript">
var aHref = new Array();
var sBody = "";
function doInit(){
mapIframe.document.designMode="On";
mapIframe.document.open();
mapIframe.document.write("<head><style>body,a,table,td {font-size:9pt;font-family:'宋体,Verdana,Arial';Color:#000000;}</style></head><body MONOSPACE>");
mapIframe.document.body.innerHTML = sBody;
mapIframe.document.body.contentEditable = "true";
mapIframe.document.ondblclick=new Function("return dblClick(mapIframe.event);");

mapIframe.document.execCommand("2D-Position",true,true);
//mapIframe.document.execCommand("MultipleSelection", true, true);
mapIframe.document.execCommand("LiveResize", true, true);
mapIframe.document.close();
}function newMap(href,w,h,l,t){
var n = aHref.length;
aHref[n]=href;
mapIframe.document.body.innerHTML += "<img id='myIMAGE"+n+"' border=1 src='../images/space.gif' style='position:absolute;zIndex:"+(n+1)+";width:"+w+";height:"+h+";left:"+l+";top:"+t+"'>";
mapIframe.scrollBy(0,0);
mapIframe.focus();
}
</script>
</HEAD><table border=0 cellpadding=0 cellspacing=3 align=center width="100%" height="100%">
<tr><td colspan=2 height="100%"><iframe ID="mapIframe" MARGINHEIGHT="1" MARGINWIDTH="1" width="100%" scrolling="yes" height="100%"></iframe></td></tr>
</table>
<Script Language=JavaScript>
doInit();
</Script>
<Script Language=JavaScript>
for(i=1;i<100;i++)
{
newMap(10301001,10,20,i*10,0);
}
</Script>
</body>
</html>上面的循环100就已经很慢了,如果是400的话就要几分钟才能结束,而实际上3 4百是很常有的,那怎么能优化下呢?"<img id='myIMAGE"+n+"' border=1 src='../images/space.gif' 
这里的图片是一个1像素的有色图片,不用图片,用div标签如果能实现也行
谢谢

解决方案 »

  1.   

    频繁操作dom对象速度肯定受影响,不如循环内化,
    先循环拼接好插入内容,然后一次插入到body中,这样比较快些!
      

  2.   

    谢谢
    function newMap(href,w,h,l,t){
    ...
    }但这里的那个href是个不定值,是用asp从数据库里取出的,所以用内循环的方法无法调用
      

  3.   

    首先声明:没有仔细看你的代码。只给一种建议:那你可以先把所有的href取出来放到一个数组或者json(适合键值对)数组里面,循环的时候从里面判断取出不就可以了?
      

  4.   

    先把 HTML 代码保存到一个字符串中,然后一次性设置 mapIframe.document.body.innerHTML
    如下:<HTML>
    <HEAD>
    <script language="JavaScript">
    var aHref = new Array();
    var sBody = "";
    function doInit(){
        mapIframe.document.designMode="On";
        mapIframe.document.open();
        mapIframe.document.write("<head><style>body,a,table,td {font-size:9pt;font-family:'宋体,Verdana,Arial';Color:#000000;}</style></head><body MONOSPACE>");
        mapIframe.document.body.innerHTML = sBody;
        mapIframe.document.body.contentEditable = "true";
        mapIframe.document.ondblclick=new Function("return dblClick(mapIframe.event);");
        
        mapIframe.document.execCommand("2D-Position",true,true);
        //mapIframe.document.execCommand("MultipleSelection", true, true);
        mapIframe.document.execCommand("LiveResize", true, true);
        mapIframe.document.close();
    }function newMap(href,w,h,l,t){
        var n = aHref.length;
    var str = null;
        aHref[n]=href;
        str = "<img id='myIMAGE"+n+"' border=1 src='../images/space.gif' style='position:absolute;zIndex:"+(n+1)+";width:"+w+";height:"+h+";left:"+l+";top:"+t+"'>";
        mapIframe.scrollBy(0,0);
        mapIframe.focus();
    return str;
    }
    </script>
    </HEAD><table border=0 cellpadding=0 cellspacing=3 align=center width="100%" height="100%">
    <tr><td colspan=2 height="100%"><iframe ID="mapIframe" MARGINHEIGHT="1" MARGINWIDTH="1" width="100%" scrolling="yes" height="100%"></iframe></td></tr>
    </table>
    <Script Language=JavaScript>
    doInit();
    </Script>
    <Script Language=JavaScript>
    var str = "";
    for(i=1;i<1000;i++)
    {
    str += newMap(10301001,10,20,i*10,0);
    }
    mapIframe.document.body.innerHTML = str;
    </Script>
    </body>
    </html>
      

  5.   

    怎么会无法调用呢?
    <HTML>
    <HEAD>
    <script language="JavaScript">
    var aHref = new Array();
    var sBody = "";
    var arr = new Array();
    function doInit(){
        mapIframe.document.designMode="On";
        mapIframe.document.open();
        mapIframe.document.write("<head><style>body,a,table,td {font-size:9pt;font-family:'宋体,Verdana,Arial';Color:#000000;}</style></head><body MONOSPACE>");
        mapIframe.document.body.innerHTML = sBody;
        mapIframe.document.body.contentEditable = "true";
        mapIframe.document.ondblclick=new Function("return dblClick(mapIframe.event);");
        
        mapIframe.document.execCommand("2D-Position",true,true);
        //mapIframe.document.execCommand("MultipleSelection", true, true);
        mapIframe.document.execCommand("LiveResize", true, true);
        mapIframe.document.close();
    }function newMap(href,w,h,l,t){
        var n = aHref.length;
        aHref[n]=href;
        arr.push("<img id='myIMAGE"+n+"' border=1 src='../images/space.gif' style='position:absolute;zIndex:"+(n+1)+";width:"+w+";height:"+h+";left:"+l+";top:"+t+"'>");
        //mapIframe.document.body.innerHTML += "<img id='myIMAGE"+n+"' border=1 src='../images/space.gif' style='position:absolute;zIndex:"+(n+1)+";width:"+w+";height:"+h+";left:"+l+";top:"+t+"'>";
        //mapIframe.scrollBy(0,0);
        //mapIframe.focus();
    }
    function flush(){
    mapIframe.document.body.innerHTML += arr.join("");
    mapIframe.scrollBy(0,0);
    mapIframe.focus();
    }
    </script>
    </HEAD><table border=0 cellpadding=0 cellspacing=3 align=center width="100%" height="100%">
    <tr><td colspan=2 height="100%"><iframe ID="mapIframe" MARGINHEIGHT="1" MARGINWIDTH="1" width="100%" scrolling="yes" height="100%"></iframe></td></tr>
    </table>
    <Script Language=JavaScript>
    doInit();
    </Script>
    <Script Language=JavaScript>
    arr = new Array();
    for(i=1;i<400;i++)
    {
    newMap(10301001,10,20,i*10,0);
    }
    flush();
    </Script>
    </body>
    </html>