編輯:我還在用我的頭敲打我的桌子呢。
我正試圖通過javascript動態地為畫廊中的一堆img標簽設定src。每個畫廊的幻燈片都有img標簽,我把它們歸為兩類。 "之前 "和 "之后"。問題是,有些頁面有全部8張照片,但其他頁面則較少。如果圖片加載成功(*在這種情況下,讓我們把成功定義為回應不是404未找到),一個.load類就會被添加到圖片上,使其具有邊框,但如果出現404未找到,那么就會添加一個.hidden類,為圖片設定顯示:隱藏)
。目前的問題是:盡管一些img標簽在控制臺中生成了以下錯誤資訊:"GET http://blablabla/Images/gallery/job1/before-1.jpg 404 (Not Found)",但.onerror并沒有啟動,而.onload卻啟動了。如果我檢查那些尚未加載的img標簽(這些標簽已經出現在頁面上),我可以看到它們有一個完整的src屬性,盡管所提供路徑上的圖片并不存在。當然,這仍然應該是一個錯誤。
uj5u.com熱心網友回復: 問題在于你的 Response在視窗上被定義,但Response.ok是未定義的。未定義評估為false(是一個虛假的值) 試一下:
標籤: 上一篇:創建嵌套陣列形成物件陣列const loadImg = function (img, url) {
return new Promise((myResolve, myReject) => /span>{
img.src = url;
img.onload = myResolve(img)。
img.onerror = myReject(img);
});
};
const populateBeforeImgs = function () {
for (let i = 0; i < beforeImgs.length; i ) {
const img = beforeImgs[i];
const url = `Images/gallery/job${galleryIndex}/before-${i 1}.jpg`/span>。
loadImg(img, url)
.then((value) =>/span> {
value.classList.add("load")。
})
.catch((error) => {
error.classList.add("hidden"/span>)。
});
}
};
const populateAfterImgs = function () {
for (let i = 0; i < afterImgs.length; i ) {
const img = afterImgs[i];
const url = `Images/gallery/job${galleryIndex}/after-${i 1}.jpg`。
loadImg(img, url)
.then((value) =>/span> {
value.classList.add("load")。
})
.catch((error) => {
error.classList.add("hidden"/span>)。
});
}
};
loadImg函式:if (Response.ok) {
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
const loadImg = function(img, url) {
return new Promise((resolve, reject) => /span>{
img.src = url;
img.onload = () => resolve(img)。
img.onerror = () => reject(img)。
});
};
const img1 = new Image() 。
const img2 = new Image() 。
loadImg(img1, "https://www.placecage.com/c/200/300"/span>). then((img) => console. log("image 1 loaded!")).catch(( ) => console. warn("img 1 failed to load") )。
loadImg(img2, "https://ihopethisisnotavalidurladasdasd") 。 then((img) => console. log("image 2 loaded!")).catch(( ) => console. warn("img 2 failed to load"/span>))
