Как заменить картинку при помощи скрипта, после выполнения условия?

Есть два инпута для файлов в форме картинок.
Нажимаешь на картинку, появляется окно для загрузки файла, выбираешь файл, нажимаешь ОК и картинка должна поменяться. Как такое можно сделать?
Вот у меня есть два инпута:

<div class="input__wrapper">
							<input type="file" name="file" id="input__file" class="input input__file">
							<label for="input__file" class="input__file-button"><img class="input__file-icon" src="img/cart1.png"
									alt=""></label>

							<input type="file" name="file" id="input__file" class="input input__file">
							<label for="input__file" class="input__file-button"><img class="input__file-icon" src="img/cart2.png"
									alt=""></label>
						</div>

В стилях всё скрыто, так что инпуты выглядят как картинки. Нажимая на них и загружая файл, нужно поменять начальную картинку на другую.

Вешаю обработчик события и скрытие элемента и ничего не работает:

let inputs = document.querySelectorAll('.input__file');
    Array.prototype.forEach.call(inputs, function (input) {
      let label = input.nextElementSibling,
        labelVal = label.document.getElementById("input__file-icon").style.display='none';
	  }
	)
  • Вопрос задан
  • 419 просмотров
Решения вопроса 2
@Soer44 Автор вопроса
Для замены картинки:

<script>
let inputs = document.querySelectorAll('.input__file1');
Array.prototype.forEach.call(inputs, function (input) {
  input.addEventListener('change', function() {
          let label = this.nextElementSibling;
          label.children[0].src="img/activecart1.png";
      })
	})

	let inpts = document.querySelectorAll('.input__file2');
Array.prototype.forEach.call(inpts, function (input) {
  input.addEventListener('change', function() {
          let label = this.nextElementSibling;
          label.children[0].src="img/activecart2.png";
      })
	})


</script>
Ответ написан
Комментировать
@LJ322
У вас на лейбле класс, а не айдишник висит. И вы неправильно к потомку обращаетесь:
let inputs = document.querySelectorAll('.input__file');
inputs.forEach(function (input) {
  input.addEventListener('change', function() {
    let label = this.nextElementSibling;
    let image = label.children[0]
    image.style.display = "none:
  }
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы