首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js动态添加img不显示图片

在JavaScript中动态添加<img>元素而不显示图片,可能由多种原因引起。以下是基础概念、常见原因及其解决方法:

基础概念

动态添加图片通常涉及创建一个<img>元素,设置其src属性,并将其插入到DOM中。例如:

代码语言:txt
复制
const img = document.createElement('img');
img.src = 'path/to/image.jpg';
document.body.appendChild(img);

常见原因及解决方法

  1. 图片路径错误
    • 原因:指定的图片路径不正确,导致浏览器无法找到图片资源。
    • 解决方法:确保src属性中的路径正确,可以使用绝对路径或相对路径。检查文件名和扩展名是否正确。
    • 解决方法:确保src属性中的路径正确,可以使用绝对路径或相对路径。检查文件名和扩展名是否正确。
  • 跨域资源共享(CORS)问题
    • 原因:如果图片来自不同的域,且服务器未正确设置CORS头,浏览器会阻止加载图片。
    • 解决方法:确保图片服务器设置了适当的CORS头,如Access-Control-Allow-Origin: *。如果无法修改服务器设置,可以考虑将图片托管在同一域下。
  • 图片加载顺序
    • 原因:在图片完全加载之前尝试显示,可能导致图片不显示。
    • 解决方法:使用onload事件确保图片加载完成后再进行操作。
    • 解决方法:使用onload事件确保图片加载完成后再进行操作。
  • 样式问题
    • 原因:CSS样式可能隐藏了图片,如display: none;visibility: hidden;
    • 解决方法:检查相关CSS样式,确保图片没有被隐藏。
    • 解决方法:检查相关CSS样式,确保图片没有被隐藏。
  • JavaScript执行时机
    • 原因:如果脚本在DOM加载完成之前执行,可能导致无法正确插入图片。
    • 解决方法:将脚本放在<body>底部,或使用DOMContentLoaded事件确保DOM已加载。
    • 解决方法:将脚本放在<body>底部,或使用DOMContentLoaded事件确保DOM已加载。
  • 浏览器缓存问题
    • 原因:有时浏览器缓存可能导致旧的或错误的图片显示不出来。
    • 解决方法:尝试清除浏览器缓存,或在src属性中添加一个随机参数以强制重新加载。
    • 解决方法:尝试清除浏览器缓存,或在src属性中添加一个随机参数以强制重新加载。

应用场景

动态添加图片常用于:

  • 图片懒加载
  • 根据用户交互动态展示图片
  • 动态生成内容,如从服务器获取图片URL后显示

总结

要解决JavaScript动态添加<img>元素不显示的问题,建议按照以下步骤排查:

  1. 确认图片路径是否正确。
  2. 检查是否存在CORS限制。
  3. 确保图片加载完成后再进行DOM操作。
  4. 查看CSS样式是否影响图片显示。
  5. 确保脚本在DOM加载完成后执行。
  6. 清理浏览器缓存或强制重新加载图片。

通过系统地检查上述各个方面,通常可以找到并解决图片不显示的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vue中显示img图片,显示不出来怎么办?vue显示图片

1、近期在学习Vue中发现了一个难点就是显示图片img> 试了很多办法都不行,有的还保错。后来我找了很多人,以及网上找资料终于被我给找到了。...2、如何你是一个普通组件的话,那么这样就可以了 img src="...../assets/images/fk.jpg" width="100%"> 上面这种是写死的,下面让我们试试进行动态显示; 或者这样写也可以: return { imgUrl:require(.../是访问不到的,那么可以试试使用下面 @代替 src目录 require(“@/assets/images/xxx.jpg”) 以上都不行,试试更换图片存放目录到 static 文件中 查询效果 ==...》 Vue显示图片 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151977.html原文链接:https://javaforall.cn

9.8K10
  • 处理img标签加载图片失败,显示默认图片简单代码分享

    常规方法解决我们都知道,img标签支持onerror事件,在装载文档或图像的过程中如果发生了错误,就会触发onerror事件。可以使用一张提示错误的图片代替显示不了的图片。...例如这样使用: img src="img01" onerror="javascript:this.src='img02';"> 但是 ,注意哦,这里有个大坑哦,如果 img02 也不存在,则会继续触发...而且,就算图片存在,但网络很不通畅,也可能触发 onerror 。...img = event.srcElement;img.src = "img02";img.onerror = null;} 代码测试 测试图存在,测试图正常显示 function...= null; } 测试图不存在,自动替换显示加载图 function slnotimg() { var img = event.srcElement; img.src = "https://web-static.q6q.cc

    4.3K20

    js动态添加div

    问题 有没有遇到过这样的需求, 在页面上会有不定个input, 点击添加按钮就添加 ?...把他封装起来, 需要的时候调用就好了 思路 因为每个input标签的name如果相同的话, 在后端接收的时候会出错, 所以我的解决办法就是在name后加上一个数字, 后端用一个循环进行接收 点击第一行的添加...点击的时候, 将div准备好, 添加到内容div中的第一个 点击每行的添加 将div添加到当前点击行后面一个 点击每行删除 删除当前div 实现 基本思路很简单, 只要在每个点击按钮上添加对应的点击事件...我在封装的时候喜欢先想用的时候怎么用, 然后根据这个思路来想应该怎么封装, 思考如下 因为添加的div肯定是不同的, 是需要传的参数, 但是如果直接传div字符串也太丑了, 应该在页面直接写HTML,...attr('name'); $(this).attr('name', name + '_' + secp); }); var _this = this; // 给添加按钮添加点击事件

    24.5K40

    OpenCV图片动态特效显示(一)--展开显示

    ——《微卡智享》 本文长度为3033字,预计阅读8分钟 前言 最近在规划自己的学习路径,大概又有了一个新的方向,正好最近抽着空做一些OpenCV的基础的小练习,图片的动态特效展示就是用了最简单的函数来做了一些效果...从右向左,从下到上的效果也可以根据这样我们来实现,当然到这来说基本的这样显示就已经完成了,像文章开始那个同时展示的效果实现,我们就是把这几个方式封装起来了,然后使用C++11中的future的多线程方式呈现了出来...封装函数 //垂直方向显示 direction 0-从上到下 1-从下到上 2-从左向右 3-从右向左 void directionshow(Mat src, int width, int height...tmpsrc.copyTo(dst2); // imshow("dst2", dst2); // waitKey(1); //} waitKey(0); return 0; } //垂直方向显示

    2.7K50

    vb添加GIF动态图片

    众说周知,GIF格式动画文件具有小巧、制作方便等特点,因此在网上得到广泛应用,在vb的picturebox和image控件添加图片后变成静止的了,这给我们设计VB应用程序带来了不便。...通过学习方法特别很多,而且并没有多麻烦: 一、最简单的方法 1、在picturebox控件中添加gif格式图片 首先、需要注册,注册方法:在工程中选中“引用”→引用项目ActiveMovie...其次、'在PictureBox控件中显示GIF动画(图片),凡有句柄hwnd的窗体控件均可以;在窗体Form1上添加2个命令按钮Command1,Command2和1个图片框控件Picture1。...其次、在窗体Form1上添加2个命令按钮Command1,Command2和1个图片框控件image1 (1)、在代码窗口的通用段添加: '调用运动图像类型库Quartz.dll,在c:\windows...三、最麻烦的方法 用PictureBox控件或Image控件或窗体的背景图片来显示动的图片,可以考虑用Timer控件使每隔一定的时间就更改一次控件的Picture属性来切换控件的图片以达到动画的效果。

    1.2K10

    OpenCV图片动态特效显示(三)-- 平移显示及拉伸显示效果

    上图中可以看到,就是使用平移实现的效果,其实这个和我们第一章的显示不同就在于,我们展开的显示,垂直方向全是从上到下的显示,只不过先显示头部还是底部,同理从左到右,和从右到左也是全部从左边开始显示。...窗口位置显示 ? 微卡智享 前面两章动画时我们imshow的显示位置在过程一中还要自己手动鼠标点一下,这次我在单元里又封装了一个给显示图片窗体定位的函数。...窗体定位代码 //显示窗口设置 //参数 img 显示的图像源, // winname 显示的窗口名称, // pointx 显示的坐标x // pointy 显示的坐标...y void setshowwindow(Mat img, string winname, int pointx, int pointy) { //设置显示窗口 namedWindow(winname..., WindowFlags::WINDOW_NORMAL); //设置图像显示大小 resizeWindow(winname, img.size()); //设置图像显示位置 moveWindow

    1.8K20
    领券