Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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 如何在通过socket.io事件设置后更改图像src?_Javascript_Sockets_Socket.io - Fatal编程技术网

Javascript 如何在通过socket.io事件设置后更改图像src?

Javascript 如何在通过socket.io事件设置后更改图像src?,javascript,sockets,socket.io,Javascript,Sockets,Socket.io,使用socket.io,我使用base64编码字符串将图像从服务器推送到客户端: socket.on('send_picture', function (data){ socket_data = (socket_data + data); document.getElementById('imgid').src = socket_data }) 如何在下一个socket.io事件中重置'imgid'的src?它可以正常工作一次,但在刷新页面之前不会显示新图像。我发现加载新图像内

使用socket.io,我使用
base64
编码字符串将图像从服务器推送到客户端:

socket.on('send_picture', function (data){
    socket_data = (socket_data + data);
    document.getElementById('imgid').src = socket_data
})

如何在下一个socket.io事件中重置
'imgid'
的src?它可以正常工作一次,但在刷新页面之前不会显示新图像。我发现加载新图像内容最可靠的方法是每次创建一个新的图像元素,并用新的图像对象替换以前的图像对象。你可以这样做:

socket.on('send_picture', function (data){
    socket_data = socket_data + data;
    var oldImg = document.getElementById('imgid');
    var newImg = new Image();
    newImg.src = socket_data;
    newImg.id = 'imgid';
    oldImg.parentNode.replaceChild(newImg, oldImg);
});

你在使用数据URI吗?是的,我在使用。从服务器套接字第一次推送后,它工作正常,但之后它显示imgid.src URI已设置,并且不会随“socket_data”的新值动态更改。每次需要显示新图像时,您都可以通过用新对象替换img对象来解决此问题。这就是我在幻灯片中所做的,因为在一个图像上不断更改
.src
存在问题。如何在不刷新页面的情况下执行此操作?以编程方式使用
var img=new image()
创建一个新图像对象,设置其
.src
属性,然后使用将旧图像对象替换为新图像对象,将其插入页面。