我正在尝试从数组对象的这个 for 循环中显示我的图像

Posted

技术标签:

【中文标题】我正在尝试从数组对象的这个 for 循环中显示我的图像【英文标题】:I am trying to get my image to display from this for loop from the array object 【发布时间】:2022-01-20 02:38:03 【问题描述】:

我试图让数组对象中的链接在循环通过时显示,但它们显示为断开的链接。 broken link code

<p id= "tracks"> </p>
<div id = "images"> </div>
<script>

let songs = [
  
    title: "Getting Away with It (All Messed Up)",
    artist: "James",
    album: "Pleased to Meet You",
    year: 2001,
    art: "https://upload.wikimedia.org/wikipedia/en/2/2a/JamesPleasedToMeetYou.jpg"
  ,
  
    title: "Renaissance Affair",
    artist: "Hooverphonic",
    album: "Blue Wonder Power Milk",
    year: 1998,
    art: "https://upload.wikimedia.org/wikipedia/en/1/17/Hooverphonic-Blue_Wonder_Power_Milk.jpg"
  ,
  
    title: "White Nights",
    artist: "Oh Land",
    album: "Oh Land",
    year: 2011,
    art: "https://upload.wikimedia.org/wikipedia/en/6/68/Oh_Land_%28album%29.png"
  
]
  // javascript Code here
 element_p = document.getElementById("tracks")
 //alert (element_p.innerhtml); 
 let text = "";

 for (let data of songs) 
  let new_paragraph= document.createElement ('p');
 new_paragraph.innerHTML = 'Title: '+ data.title + " <br> Album: "+ data.album+ ' <br> Artist: ' + data.artist + "<br> Year: "+ data.year
  element_p.appendChild(new_paragraph)
 
element_div = document.getElementById ("images")
let image = "";

for (let photo of songs)
 let img_node = document.createElement ('IMG');
 img_node.setAttribute('src', "data.art");
 document.getElementById("images").appendChild (img_node);
 

我做错了什么?我尝试了两种不同的方法,这种方法是至少显示断开链接的唯一方法。感谢您提供任何帮助或见解。

【问题讨论】:

请在问题中包含您的代码 抱歉刚刚添加了它 @JenniferGarcia in this img_node.setAttribute('src', "data.art");我猜 data.art 不应该用引号引起来? 【参考方案1】:

您应该使用img_node.setAttribute('src', photo.art)。像下面的例子:

...
for (let photo of songs)
  let img_node = document.createElement ('img');
  img_node.setAttribute('src', photo.art);
  document.getElementById("images").appendChild(img_node);
 

【讨论】:

你为什么接受这个答案?代码被破坏了。它声明let photo,然后访问data.art 也可以使用IMG。大小写无关紧要。【参考方案2】:

data.art 在引号中,因此它被视为字符串而不是对象。此外,您的 for 循环声明了 photo,因此您应该将 data.art 更改为 photo.art。像这样:

for (let photo of songs)
  let img_node = document.createElement ('IMG');
  img_node.setAttribute('src', photo.art);
  document.getElementById("images").appendChild (img_node);
 

【讨论】:

不客气,但你接受了错误的答案:( let 似乎是一个 js 对象数组,所以 src "value" 应该是 let[index].art “data.art”也不应该有引号,除非你使用 eval("data.art") 它应该是 let[index].art eval("let[index].art") 塞缪尔,您在评论错误的答案。另外,songs 是一个数组,let photo 代表数组中的每个对象。因此,您可以使用photo.art 访问艺术作品。引号中没有任何内容。【参考方案3】:

您必须使用 photo.art 传入每张照片的网址,而不是“data.art”

【讨论】:

以上是关于我正在尝试从数组对象的这个 for 循环中显示我的图像的主要内容,如果未能解决你的问题,请参考以下文章

无法在 v-for 循环中显示数组中的所有对象,仅显示最后一个对象

Howler.js - 从数组/for循环引用和触发文件

VueJS中的For循环与对象数组中的TypeScript

For循环遍历数组仅显示最后一个值

从 NSMutableArray 中删除 for 循环中的对象

使用for循环从数组迭代到列表