[英]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?
我只希望能夠單擊該圖像,然后出現一個警報,顯示標題,藝術家,專輯和年份。 我對如何在循環外執行此操作感到困惑。 這是我現在的代碼
<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>
您在每次迭代中都調用alert()
,因為它沒有包含在函數中,因此, onclick
被分配給alert()
返回的值。
相反,請將您的alert()
放在函數內部,以防止多次調用alert()
,如下所示:
myImage.onclick = function(){alert(JSON.stringify(songs[i], null, 2))};
// ES6 syntax
myImage.onclick = ()=>alert(JSON.stringify(songs[i], null, 2));
這是您的片段,其中包含每次單擊圖像時都會調用的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.