Javascript 如果内部的图像不存在,则隐藏部分

Javascript 如果内部的图像不存在,则隐藏部分,javascript,html,Javascript,Html,我有一个HTML代码,其中包含以下内容: 已从此代码中添加style=“display:none;”: document.addEventListener("DOMContentLoaded", function(event) { document.querySelectorAll('img').forEach(function(img){ img.onerror = function(){this.style.display='none';}; }) })

我有一个HTML代码,其中包含以下内容:


已从此代码中添加style=“display:none;”:

document.addEventListener("DOMContentLoaded", function(event) {
document.querySelectorAll('img').forEach(function(img){
    img.onerror = function(){this.style.display='none';};
   })
});

但是,如果所有图像源都不可用,是否可以隐藏所有节类网格-1?

您可以向未加载的图像添加一个类(或数据属性,如果可以),然后将它们与网格中的总图像量进行比较

功能检查网格(图像){
const grid=image.closest('section');
const gridImages=grid.querySelectorAll('img');
const gridImagesWithError=grid.querySelectorAll('img.invalid src');
if(gridImagesWithError.length==gridImages.length){
grid.style.display='none';
}
}
document.addEventListener(“DOMContentLoaded”),函数(事件){
const images=document.queryselectoral('img');
image.forEach(函数(图像){
image.onerror=函数(){
this.classList.add('invalid-src');
this.style.display='none';
检查网格(本);
};
});
});

虽然这是可行的,但为了检查多个网格,建议您向网格中添加一个类,这样查询选择器就不必完全依赖可能不安全的节标记。

确保这是可能的-您必须先计算每个节包含多少这样的图像,然后,对于每个未能加载的图像,增加第二个计数器(也是每个部分)。然后检查计数器是否(已经)达到该区域内的图像数。如果是这样,从当前图像导航到section元素,并将其隐藏……这样看来,它似乎只适用于第一个部分,其中我有所有3个图像,因此If比较不起作用(它比较0==3)。为什么它不检查正确的部分?这可以通过将
This
作为
img
传递到
checkGrid
来改进,然后使用
const grid=img.closest('section')那么它就不依赖于有一个特定的部分。哦,很好。谢谢你的提示,我正在编辑答案。