简体   繁体   English

我该如何做才能在单击图像元素时添加显示.title,.artist,.album和.year的警报?

[英]How do I make it so that when I click an image element, it will add an alert showing the .title, .artist, .album, and .year?

I just want to be able to click the image and then an alert comes up showing the title, artist, album, and year. 我只希望能够单击该图像,然后出现一个警报,显示标题,艺术家,专辑和年份。 I'm rather confused on how to do this outside of the loop. 我对如何在循环外执行此操作感到困惑。 Here is the code I have now 这是我现在的代码

<html>
  <body>
  Assignment 5
    <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"
  }
  ];
    for(let i = 0; i < songs.length;i++){
      console.log(songs[i].title);
      let myTitle = document.createElement('div');
      myTitle.innerText = songs[i].title;
      document.body.appendChild(myTitle);
      let myImage = document.createElement('img');
      myImage.src = songs[i].art;
      document.body.appendChild(myImage)
      myImage.onclick = alert('myImage.title')
    }

    </script>
  </body>
</html>

You were calling alert() on every iteration as it was not enclosed within a function, therefore, onclick was assigned to the value returned by alert() . 您在每次迭代中都调用alert() ,因为它没有包含在函数中,因此, onclick被分配给alert()返回的值。

Instead, put your alert() inside of a function to prevent the alert() from being called multiple times like so: 相反,请将您的alert()放在函数内部,以防止多次调用alert() ,如下所示:

myImage.onclick = function(){alert(JSON.stringify(songs[i], null, 2))};
// ES6 syntax 
myImage.onclick = ()=>alert(JSON.stringify(songs[i], null, 2));

Here is your snippet with a alert() that is called on every image click: 这是您的片段,其中包含每次单击图像时都会调用的alert()

 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" } ]; // ES6 syntax songs.forEach(song => { let myTitle = document.createElement('div'); myTitle.innerText = song.title; document.body.appendChild(myTitle); let myImage = document.createElement('img'); myImage.src = song.art; document.body.appendChild(myImage) myImage.onclick = () => alert(`Title: ${song.title} Artist: ${song.artist} Album: ${song.album} Year: ${song.year}`); }); // The commented code below also works //for (let i = 0; i < songs.length; i++) { // let myTitle = document.createElement('div'); // myTitle.innerText = songs[i].title; // document.body.appendChild(myTitle); // let myImage = document.createElement('img'); // myImage.src = songs[i].art; // document.body.appendChild(myImage) // myImage.onclick = function(){ //alert(`Title: ${song.title} //Artist: ${song.artist} //Album: ${song.album} //Year: ${song.year}`); // }; //} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 当我点击一个按钮时,我的图像会发生变化,我该如何做到这一点? - How do I make it so when I click a button my image changes? 如何使它如果我单击一个<a>元素它转到链接,但它不会触发其父元素的.click()事件?</a> - How do I make it so that if I click an <a> element it goes to the link, but it doesn't trigger the .click() event of its parent element? 如何通过单击列表项元素来调用警报 window? - How do I call alert window by click on list item element? 仅当我不按顺序单击元素时才发出警报 - Alert only when i click on the element not sequentially 如何使之双击div时不选择单词? - How do I make it so that when I double click on a div, it doesn't select the word? 我如何做到这一点,以便当我的变量达到某个点时,我会弹出一个警告框,说些什么? - How do I make it so that when my variable reaches a certain point, I have an alert popup saying something? 如何更改剑道警报标题? - How do I change the Kendo alert title? 如何向图像添加 .click() 事件? - How do I add a .click() event to an image? 当我在Firefox中拖动图像时,如何使其不存在“Ghost”? - How do I make it so that there is no “Ghost” when I drag an image in Firefox? 我如何做到这一点,以便当您单击代码标记的元素时,复制其 innerHTML - How do I make it so that when you click an elment that the code tag, you copy its innerHTML
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM