javascript - 如果图像不存在,则更新 img src
问题描述
我有 2 个可能的图像要显示。如果第一个存在,则显示它;如果没有,显示第二个
此代码将显示在多个页面中,因此如果第一个图像不存在,它将 src 显示为“未定义”或“未知”所以我需要指定这 2 个实例
我正在尝试以下操作,但是一旦添加“或未知”,它就会中断:
<div id="section-heading">
<div id="topBannerG" class="groupImageHidden">
<img src="(unknnown)">
</div>
<div id="topBannerG" class="groupImageHidden">
<img id="ctl00_ctl26_imgBanner" src="image.jpg">
</div>
</div>
$(document).ready(function() {
var imageDef = $("#topBannerG.groupImageHidden img");
if (typeof imageDef == "undefined") || (typeof imageDef === "unknown") {
var imgHref = $('.groupImage img').attr("src");
$('#section-heading').prepend('<div id="topBannerG" class="mslwidget maxWidth groupImage"><img src="' + imgHref + '" style="border-width:0px;"></div> ');
} else {
var imgTopHref = $('#topBannerG img').attr("src");
$('#section-heading').prepend('<div id="topBannerG" class="mslwidget maxWidth msl-pagebanner"><img id="ctl00_ctl26_imgBanner" src="' + imgTopHref + '" style="border-width:0px;"></div> ');
}
});
解决方案
你让这变得比它需要的更复杂。实现所需内容的最简单方法是img
使用原始src
URL 将 DOM 添加到 DOM。然后error
在 JS 中添加一个处理程序,如果图像加载失败,则会调用该处理程序。那时,您可以将其更新为src
您知道有效的图像。像这样的东西:
$('#topBannerG img').on('error', function() {
this.src = 'https://i.imgur.com/CbsGGVp.jpg';
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="section-heading">
<div id="topBannerG" class="groupImageHidden">
<img src="invalid.jpg" />
</div>
</div>
推荐阅读
- c++ - 为什么调用 QFileDialog::getSaveFileName() 会在 Linux 上重置已安装的 Qt 消息处理程序?
- javascript - 如何在Javascript中将数组与逗号分隔值匹配?
- java - 它如何使用 Java 中的 List 对非静态对象进行静态引用?
- excel - 如何从循环中排除特定的工作表名称?
- python - 提取方括号中的整数
- pyspark - 基于值之间的Pyspark数据框过滤器
- python - 嵌入在 PySimpleGUI 窗口选项卡中的缩放 +/- 功能 matplotlib 窗口
- macos - 在 MoltenVK 中启用实例扩展
- c++ - 如何将元素从向量传输到新数组?
- python-3.x - 超出python排列时间限制