1

我有一个可以用 ajax 脚本动态更改的 div:

{
     var xmlHttp = GetXmlHttpObject();
     var url="/dashboard/ajax/images_pop_ajax.asp";
     if (!xmlHttp){
          alert ("Browser does not support HTTP Request")
          return
     }
     xmlHttp.onreadystatechange=function()
     {
          if (xmlHttp.readyState == 1)
          {
               document.getElementById("images_inner").innerHTML = LoadingAlert;
          }
          if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
          {
               var result = xmlHttp.responseText;
               document.getElementById('images_inner').innerHTML = result;
               window.onload = function(){AdjustColumns();}
          }
     };
     xmlHttp.open("GET", url , true)
     xmlHttp.send(null)
}

function GetXmlHttpObject()
{
     var objXMLHttp=null;
     if (window.XMLHttpRequest)
     {
          objXMLHttp=new XMLHttpRequest();
     }
     else if (window.ActiveXObject)
     {
          objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
     }
     return objXMLHttp;
}

images_pop_ajax.asp文件运行时,它返回 8 张图像,然后将这些图像放入 div 选项卡 id images_inner 中。完成后,我想调整页面的列,以便所有内容都对齐。所以我运行这个脚本:

function AdjustColumns()
{
     var ImgCol = document.getElementById('images_inner').offsetHeight;
     var ClassCol = 820;
     if (ImgCol > 574)
     {
          var ToAdd = eval(ImgCol - 574);
          document.getElementById('class_inner').style.height = eval(ClassCol + ToAdd) + 'px';
     }
}

我遇到的问题是 AdjustColumns() 脚本在加载所有图像之前运行,因此列不对齐。加载图像后,如何使其运行?

提前谢谢了,

新杰克

4

1 回答 1

1

对于每个图像,您应该添加此事件并在它们全部加载时等待它们(使用计数器)

   var counter = 0;
   var image = new Image();
    //attachEvent("onload") for ie
    image.addEventListener("load", function() {
                                   counter++;
    if(counter == 8) adjustColumns();
    }, false);
    image.src = "image.jpg";

请注意,尽管有时它不能很好地工作,例如当图像已经在缓存中时。

于 2012-11-19T20:09:47.673 回答