首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取[object HTMLImageElement]而不是图像

获取[object HTMLImageElement]而不是图像
EN

Stack Overflow用户
提问于 2016-03-21 00:52:12
回答 3查看 15K关注 0票数 4

我正在改造我的网站,我想要一个我的服务器状态小部件在那里,我发现了一个非常好的从MCAPI.net。他们有一个演示HTML + JS代码,我使用并修改为我自己的使用。代码把所有的东西都写成文字,上线和下线,但是我不想要无聊的旧文本,我想要一个图片,绿色表示向上,红色表示向下。我在谷歌上搜索了如何让innerHTML显示一张图片,在上做了很多次。在我周围没有收到任何错误信息,但是我得到了对象HTMLImageElement。现在我被困在..。

完整的代码(它包含在它自己的HTML文件中,当它在主站点上运行时,我将它复制/粘贴到它自己的JS中):

代码语言:javascript
复制
<script src="https://mcapi.us/scripts/minecraft.js"></script>
<div class="server-status">
<span class="server-online"></span>Players: <span class="players-online"></span>/<span class="players-max"></span>
</div>
<script>
  MinecraftAPI.getServerStatus('porotrails.com', {
  },
  
  function (err, status) {
	var up = new Image();
	var down = new Image();
	up.src = "images/up.png";
	down.src = "images/down.png";
    if (err) {
      return document.querySelector('.server-status').innerHTML = 'Error';
    }
	
    document.querySelector('.server-online').innerHTML = status.online ? up : down;
	document.querySelector('.players-online').innerHTML = status.players.now;
	document.querySelector('.players-max').innerHTML = status.players.max;
  });
</script>

我在想,由于某种原因,这条线没能完成它的工作。

代码语言:javascript
复制
document.querySelector('.server-online').innerHTML = status.online ? up : down;

TL;DR:我需要显示一个图像而不是[object HTMLImageElement]

EN

回答 3

Stack Overflow用户

发布于 2016-03-21 00:58:49

updownHTMLImageElement对象,而不是HTML。将它们赋值给innerHTML会将它们转换为字符串,从而生成此行中的[object HTMLImageElement]

代码语言:javascript
复制
document.querySelector('.server-online').innerHTML = status.online ? up : down;

试着做这样的事情:

代码语言:javascript
复制
var serverOnline = document.querySelector('.server-online');
// Remove any children (unnecessary if always empty before hand).
serverOnline.innerHTML = '';
// Append the image element.
serverOnline.appendChild(status.online ? up : down);

或者,您可以创建updown HTML字符串。

代码语言:javascript
复制
var up = '<img src="images/up.png" />';
var down = '<img src="images/down.png" />';
票数 1
EN

Stack Overflow用户

发布于 2016-03-21 00:58:55

问题是,当您更改innerHTML时,它需要一个字符串,但是updown是图像对象。与更改innerHTML不同,您可以使用appendChild将图像添加到元素中。

替换

代码语言:javascript
复制
document.querySelector('.server-online').innerHTML = status.online ? up : down;

使用

代码语言:javascript
复制
var container = document.querySelector('.server-online');
container.innerHTML = "";
container.appendChild(status.online ? up : down);

在追加图像之前,必须清除容器的内容,以便在状态更改时删除旧图像。

票数 1
EN

Stack Overflow用户

发布于 2021-06-23 08:09:58

也许你可以试试字面的风格,就像这样:

代码语言:javascript
复制
var up = "<img src='images/up.png' />";
var down = "<img src='images/down.png' />";

或者使用另一种方法获取该节点的信息。

代码语言:javascript
复制
document.querySelector('.server-online').innerHTML = status.online ? up.outerHTML : down.outerHTML;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36121542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档