Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript加载图像_Javascript_Jquery - Fatal编程技术网

从javascript加载图像

从javascript加载图像,javascript,jquery,Javascript,Jquery,在我的相册幻灯片放映页面上,我有如下代码 <span style="display:none;"> <img id="id1" src="~$imageUrl`" onload="javascript:showImage();"> </span> <span> // show loader. </span> //显示加载器。 在showImage()中,我确信图像已加载,因此我显示图像并隐藏加载程序 现在,当用户单

在我的相册幻灯片放映页面上,我有如下代码

<span style="display:none;">
   <img id="id1" src="~$imageUrl`" onload="javascript:showImage();">
</span>

<span>
    // show loader.
</span>

//显示加载器。
showImage()
中,我确信图像已加载,因此我显示图像并隐藏加载程序


现在,当用户单击next时,我需要更改图像的src。现在我不知道如何仅在加载图像时设置src。

试试这个。在
$imageUrl

<img id="id1" src="$imageUrl" onload="javascript:showImage();">

您可以添加另一个隐藏的
img
元素,并在
onload
事件中交换它们

或者使用单个图像元素并使用javascript,如:

var _img = document.getElementById('id1');
var newImg = new Image;
newImg.onload = function() {
    _img.src = this.src;
}
newImg.src = 'http://whatever';

此代码应预加载图像并在图像准备就绪时显示它

每次要加载图片时使用新的图像对象:

var image = new Image();
image.onload = function () {
    document.getElementById('id1').setAttribute('src', this.src);
};
image.src = 'http://path/to/image';
您可以尝试以下方法:

<img id="id1" src="url/to/file.png" onload="showImage()">

function showImage() {
 $('#id1').attr('src', 'new/file/link.png');
}

函数showImage(){
$('#id1').attr('src','new/file/link.png');
}
另外,尝试删除
~
,这只是操作员,服务器端(例如ASP.NET)需要它,而JS中不需要它

这样,可以更改图像的属性


下面是提示:

如果您通过AJAX加载图像,可以使用回调检查图像是否已加载,并执行隐藏和src属性分配。 大概是这样的:

$.ajax({ 
  url: [image source],
  success: function() {
  // Do the hiding here and the attribute setting
  }
});
更多阅读请参考此


设置加载图像
$('#btnnext')。单击(函数(){
$(“.spanloader”).hide();
$(“#我的图片”).attr(“src”,“1.jpg”);
});
对不起,伙计们


您不能依赖映像加载事件来触发,但在某些情况下,您可以依赖它,并退回到允许的最大加载时间。在这种情况下,10秒。我写了这篇文章,当人们想在表单帖子上链接图片时,它依靠生产代码生存

function loadImg(options, callback) {
  var seconds = 0,
  maxSeconds = 10,
  complete = false,
  done = false;

  if (options.maxSeconds) {
    maxSeconds = options.maxSeconds;
  }

  function tryImage() {
    if (done) { return; }
    if (seconds >= maxSeconds) {
      callback({ err: 'timeout' });
      done = true;
      return;
    }
    if (complete && img.complete) {
      if (img.width && img.height) {
        callback({ img: img });
        done = true;
        return;
      }
      callback({ err: '404' });
      done = true;
      return;
    } else if (img.complete) {
      complete = true;
    }
    seconds++;
    callback.tryImage = setTimeout(tryImage, 1000);
  }
  var img = new Image();
  img.onload = tryImage();
  img.src = options.src;
  tryImage();
}
像这样使用:

loadImage({ src : 'http://somewebsite.com/image.png', maxSeconds : 10 }, function(status) {
  if(status.err) {
    // handle error
    return;
  }
  // you got the img within status.img
}); 
在JSFiddle.net上试试

参见本教程:


它告诉您如何使用本机JavaScript加载图像,以及如何处理显示加载微调器的事件。基本上,创建一个新图像();然后正确处理事件。这应该适用于所有浏览器,即使在IE7中(可能甚至低于IE7,但我没有测试…)

这对我来说很有效。。。我想在点击铅笔图标后显示图像。。。我希望它是无缝的。。这就是我的方法

我创建了一个输入[文件]元素并将其隐藏

<input type="file" id="upl" style="display:none"/>

最简单的将图像从JS加载到DOM元素:

element.innerHTML += "<img src='image.jpg'></img>";
element.innerHTML+=”;
使用onload事件:

element.innerHTML += "<img src='image.jpg' onload='javascript:showImage();'></img>";
element.innerHTML+=”;

只需单击图像,即可更改:


var img=document.getElementById('imgLoad');	
img.onclick=function(){img.src=”https://i.imgur.com/PqpOLwp.png"; }

~$imageUrl
?看起来语法无效。若要使用javascript更改图像源,请使用:
document.getElementById(“id1”).src=“Path/of/image”
您应该先设置
onload
,然后再设置
src
,因为理论上图像可以在
onload
函数设置之前加载,因此似乎无法加载。@Yeti:实际上没有-这是不可能的。当脚本停止执行时,浏览器将开始下载。你可以在不同的网站上查看ways@Adassko,看看这个问题:对于特定的浏览器版本,我自己也遇到过这个问题(目前我无法在Firefox上重现)。另外,在
src
@Yeti之前设置
onload
没有什么害处:我从未见过这种行为,但我同意——这样做没有害处。Edited@Yeti,JavaScript用户代码是单线程的,但在ajax请求中包含事件循环和内部异常。你所描述的行为是如何可能的?写关于在不等待onload事件的情况下立即访问映像属性(这不是真正正确的编程方式)。它还写道,IE9b在img.src设置后不调用onload,因此这是IE9b的问题,只是在必须生成事件时不生成事件。“您不能依赖映像加载事件触发”为什么??当时chrome中的缓存存在一些不一致之处,加载事件不会在304上触发为什么不简单地使用jQuery?它使事情变得简单得多:
element.innerHTML += "<img src='image.jpg'></img>";
element.innerHTML += "<img src='image.jpg' onload='javascript:showImage();'></img>";