function LoadPage (page) {
// each page contains 10 pictures
var endp = page*10;
// Empty the main container that contains the pictures
$('#container').empty();
// Rewrite the Page Menu
for (j=1;j<Math.abs(len/10);j++) {
$('#container').append("<a href='javascript: LoadData("+j+")'>"+j+"</a>");
}
// Add the image containers containing images
for (i=endp-10;i<endp;i++) {
$('#container').append("<div class='container' id="+i+" >");
$('#'+i).append("<img src="+x[i].getElementsByTagName('URL')[0].childNodes[0].nodeValue+" width='200'>");
$('#container').append("</div>");
}
// Have to call a function ' wall.reload(); ' once all the pictures are loaded!
setTimeout(function(){
if (wall) { wall.reload(); }
},2000);
}
多次调用此函数,每次都有一个页码。一切都很好。我使用setTimeout()函数来延迟函数wall.reload()但我不想这样做。相反,我希望函数等到所有图像都加载然后触发wall.reload()
感谢。
答案 0 :(得分:1)
您可以为图片标记添加onload属性。 在那里你可以调用一个函数,比如imageLoaded(),它会增加一个imageCounter。如果图像计数器与您添加的图像数量相匹配,则会调用wall.reload()。代码看起来有些类似于以下内容:
var imagesLoaded = 0;
function imageLoaded(){
imagesLoaded++
if(imagesLoaded == numberOfImages)
wall.reload();
}
}
在图片标签中:
<img src="asdf.jpg" onload="imageLoaded()">
答案 1 :(得分:0)
function LoadPage (page) {
// each page contains 10 pictures
var endp = page*10;
// Empty the main container that contains the pictures
$('#container').empty();
// Rewrite the Page Menu
for (j=1;j<Math.abs(len/10);j++) {
$('#container').append("<a href='javascript: LoadData("+j+")'>"+j+"</a>");
}
// count of the loaded images
var counterLoaded = 0;
function waitReload(){
counterLoaded++;
// if all 10 images loaded
if (counterLoaded == 10){
if (wall){
wall.reload();
}
}
}
// Add the image containers containing images
for (i=endp-10;i<endp;i++) {
$('#container').append("<div class='container' id="+i+" >");
var img = document.createElement('img');
img.src = x[i].getElementsByTagName('URL')[0].childNodes[0].nodeValue;
img.setAttribute('width', '200');
$('#'+i).append(img);
$('#container').append("</div>");
// if image loaded - increment loaded images counter
img.onload = waitReload;
}
}