#javascript #html #css
#javascript #HTML #css
Вопрос:
Я пытаюсь изменить несколько столбцов одним нажатием кнопки, после щелчка изображение должно измениться, заголовок и фраза. Я могу применить это только к первому столбцу. Я попытался выполнить итерацию столбцов с помощью querySelectorAll() и искал ответы на других форумах.?
Также возможно ли назначить другое случайное изображение для каждого столбца одним нажатием кнопки? Заранее благодарю вас!
const images = ['sandwich', 'cookie', 'monster', 'telegram', 'gym']
const inputName = document.getElementById('input-name');
const inputPhrase = document.getElementById('input-phrase');
const btnSubmit = document.querySelector('.input-btn');
const btnClr = document.querySelector('.clr-btn');
const row = document.querySelectorAll('.column');
const image = document.querySelector('.column img');
const title = document.querySelector('.name');
const phrase = document.querySelector('.phrase');
randomImage = Math.floor(Math.random() * images.length);
logoImage = images[randomImage];
window.addEventListener('DOMContentLoaded', function() {
// createLogo()
})
btnSubmit.addEventListener('click', function(e) {
e.preventDefault()
row.forEach(function(col) {
col.classList.add('change');
image.src = `./images/${logoImage}.png`;
title.textContent = inputName.value
phrase.textContent = inputPhrase.value
})
});
Комментарии:
1.
const row = document.querySelectorAll('.column');
название var здесь сбивает с толку 😉2. правильно, должно быть col, я это исправлю.
Ответ №1:
Вместо того, чтобы использовать переменную для ссылки на изображение / имя / фразу, вы должны ссылаться на них через col
и queryselector
в каждой итерации.
btnSubmit.addEventListener('click', function(e) {
e.preventDefault()
row.forEach(function(col) {
randomImage = Math.floor(Math.random() * images.length);
col.classList.add('change');
col.querySelector("img").src = './images/' images[randomImage] '.png';
col.querySelector(".name").textContent = inputName.value
col.querySelector(".phrase").textContent = inputPhrase.value
})
});
Комментарии:
1. Спасибо, но я получаю сообщение об ошибке: app.js:26 Uncaught TypeError: не удается установить для свойства ‘src’ значение null в app.js:26 в NodeList.forEach (<анонимный>) в HTMLButtonElement.<анонимный> (app.js:24)
2. @Zoh Я исправил это, я ссылался на ваше изображение с помощью класса, когда копировал и вставлял код, но теперь это исправлено.
3. Спасибо, это было очень полезно! Кто-нибудь знает, возможно ли получить другое изображение в каждом столбце с помощью этого нажатия кнопки, поскольку изображение является случайным выбором из массива?
4. @Zoh Я обновил свой ответ для случайных изображений в строке.
5. @imavin2 Потрясающе, это здорово, теперь я понимаю механику вещей.