#javascript
Вопрос:
У меня есть массив изображений, которые отображаются при нажатии кнопки в случайном порядке. Я подтвердил, что все изображения доступны для кликабельности и что они отображают правильный источник изображения в консоли. Что я не могу сделать, так это создать событие при нажатии, которое предупреждает о появлении сообщения при нажатии на изображение. Когда я нажимаю изображение «A1», отображается предупреждение «Нет», поэтому я предполагаю, что проблема может заключаться в том, что строка изображения и фактическое изображение не связаны друг с другом?
const images$front = [
{ name: "A1", img: "A1.png" },
{ name: "B1", img: "B1.png", },
{ name: "A2", img: "A2.png", },
{ name: "B2", img: "B2.png", },
{ name: "A3", img: "A3.png", },
{ name: "B3", img: "B3.png", },
{ name: "A4", img: "A4.png", },
{ name: "B4", img: "B4.png", },
];
//Rear image
const images$rear=[
{ name: "z", img: "z.png" , },
];
function shuffle(array) {
let currentIndex = array.length,
randomIndex;
while (currentIndex != 0) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]
];
}
}
shuffle(images$front)
function DisplayImage(i) {
let CardImage = document.createElement('img');
CardImage.src = `Images/${images$front[i].img}`
CardImage.alt = CardImage.src;
document.querySelector("#box").appendChild(CardImage);
CardImage.addEventListener("click", function(e) {
if (CardImage === "A1") {
alert("Yes")
} else {
alert("No")
}
console.log(e.target.src)
})
}
Спасибо
Комментарии:
1.
CardImage==="A1"
всегда будет ложным, такCardImage
как является ссылкой на anHTMLImageElement
и является узлом элемента , а не строкой. Вы могли бы — возможно — попробовать:CardImage.getAttribute('src') === "A1.png"
? Кроме того, не могли бы вы добавить достаточно своего кода, чтобы мы могли воспроизвести вашу проблему? Похоже, вы не набираетеDisplayImage()
свой отправленный код.2. Машинописный текст указывал бы, что a
HTMLImageElement
и astring
никогда не могут быть равны
Ответ №1:
Ваше условие пытается приравнять объект к строке, CardImage-это HTMLImageЭлемент, который всегда будет ложным , вы можете добавить другое свойство «имя», а затем выполнить условие.
function DisplayImage(i) {
let CardImage = document.createElement('img');
CardImage.src = `Images/${images$front[i].img}`
CardImage.alt = CardImage.src;
CardImage.name = images$front[i].name; //here is the change.
document.querySelector("#box").appendChild(CardImage);
CardImage.addEventListener("click", function(e) {
if (CardImage.name === "A1") { //change here too.
alert("Yes")
} else {
alert("No")
}
console.log(e.target.src)
})
}
Комментарии:
1. Ура, Мединиос, это очень полезно и ценно, спасибо.