我有幾個圖片奇怪的結果,每個圖像的寬度爲1400px,我想負荷後的所有圖像,所有圖像的警報和寬度,這是我的代碼:從JS圖片的加載,在Safari和Chrome
var images = new Array("0.jpg", "1.jpg", "2.jpg");
for (var i = 0; i < images.length; i = i + 1) {
$("#img_place").append("<img src='" + images[i] + "'>");
}
var loadedImgsCount = 0;
var imgTotalWidth = 0;
for (var i = 0; i < images.length; i = i + 1) {
var currImg = new Image();
currImg.src = images[i];
currImg.onload = function() {
loadedImgsCount = loadedImgsCount + 1;
imgTotalWidth = imgTotalWidth + currImg.width;
}
}
interv = setInterval(function() {
if (images.length === loadedImgsCount) {
alert(imgTotalWidth);
clearInterval(interv);
}
}, 500);
和在HTML:
<div id="img_place">
</div>
該代碼例如是用於3圖像,問題是:在鉻和Safari,從該代碼導致有時不正確的:有時1400,有時2800但有時正確:4200 。 在opera和firefox中總是預期:4200. 請告訴我,我哪裏有錯誤?爲什麼我的代碼在Safari瀏覽器中運行並且Chrome不正確?
爲什麼要使用setInterval?你可以把它的代碼放在onload中。 –
總是使用數組文字,而不是'new Array'。 'var images = [「0.jpg」,「1.jpg」,「2.jpg」];' – Ryan
你知道,'loadedImgsCount ++'比'loadedImgsCount = loadedImgsCount + 1'要短很多。 'imgTotalWidth = imgTotalWidth + currImg.width':'imgTotalWidth + = currImg.width'。 – Ryan