You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用JavaScript展示图片数组时显示[Object HTMLImage Element]求助

解决图片数组显示成[Object HTMLImage Element]的问题

嘿,我明白你现在遇到的困扰啦!页面上没显示出想要的图片,反而出现了[Object HTMLImage Element]这段文字,问题其实出在你处理Image对象的方式上,咱们来一步步修正:

问题根源

你在数组里存储的是Image类型的对象,但在next函数中,你用了:

item.textContent = items[currentItem];

当你把一个对象直接赋值给元素的textContent属性时,JavaScript会自动把这个对象转换成字符串形式,也就是你看到的[Object HTMLImage Element],这可不是咱们要的图片效果哦。

修正方案

把赋值文本的代码改成将Image元素添加为div的子节点,也就是把上面那行代码替换成:

item.appendChild(items[currentItem]);

这样浏览器就会渲染出Image对象对应的图片,而不是把它转成字符串。

另外,作为小建议,给每个Image对象加上alt属性会更好,既能提升页面的可访问性,也能在图片加载失败时显示替代文本,比如:

items[0] = new Image();
items[0].src = "../images/bier%20tafe.jpeg";
items[0].alt = "Bier tafe"; // 添加alt属性

修改后的完整代码

let slideshow;
let currentItem = 0;
let items = [6];

items[0] = new Image();
items[0].src = "../images/bier%20tafe.jpeg";
items[0].alt = "Bier tafe";
items[1] = new Image();
items[1].src = '../images/pintjes.jpeg';
items[1].alt = "Pintjes";
items[2] = new Image();
items[2].src = '../images/flesjes.jpeg';
items[2].alt = "Flesjes";
items[3] = new Image();
items[3].src = '../images/grain.jpg';
items[3].alt = "Grain";
items[4] = new Image();
items[4].src = '../images/cigar.jpg';
items[4].alt = "Cigar";
items[5] = new Image();
items[5].src = '../images/whiskey.jpg';
items[5].alt = "Whiskey";

document.addEventListener('DOMContentLoaded', function(ev){
 slideshow = document.querySelector('.slideshow');
 slideshow.addEventListener('click', next);
 slideshow.dispatchEvent(new MouseEvent('click'));
});

function next(ev){
 ev.preventDefault();
 removeItem();
 let item = document.createElement('div');
 // 替换成appendChild添加图片元素
 item.appendChild(items[currentItem]);
 item.classList.add("slideshow-item");
 slideshow.appendChild(item);
 setTimeout(function(){
 item.classList.add('active');
 }, 20);
 currentItem++;
 if(currentItem > items.length-1){
 currentItem = 0;
 }
}

// 补充removeItem函数的实现(如果之前未定义)
function removeItem() {
  const oldItem = slideshow.querySelector('.slideshow-item');
  if (oldItem) {
    oldItem.remove();
  }
}

这样修改后,页面应该就能正确显示你想要的图片啦!

内容的提问来源于stack exchange,提问作者Inyea

火山引擎 最新活动