Задать вопрос
@alekcena
Нелинейный наставник

Не работает условие If почему такое случилось?

В блоке находятся картинки с двумя вариантами ссылки на неё
<div class="centr">
      <img src="2.png" alt="">
      <img src="1.png" alt="">
      <img src="2.png" alt="">
      <img src="1.png" alt="">
      <img src="1.png" alt="">
      <img src="2.png" alt="">

    </div>
    <div class="button">
    <p>button</p>

    </div>
    </div>

Задача- при клике на картинке выделить её, при нажатии на кнопку сменить её на второй вариант.
Количество выделяемых картинок от 1 до всех.
let test = document.querySelectorAll('img');
let but = document.querySelector('.button');
but.onclick = change;
for(let i =0; i<test.length; i++){
  test[i].onclick = adClass;

}
function adClass() {
  this.classList.toggle('red');

}

function change(){
let rad =document.querySelectorAll('.red');
  for(let i=0; i<rad.length; i++){
  if(rad[i].src=="1.png"){
    rad[i].src="2.png"
  }
 else
 {rad[i].src="1.png";
}
}
}

В любом из вариантов всегда происходит условие для if, else просто игнорируется. В чём причина понять не могу

https://jsfiddle.net/2utfvk85/
Картинки вставить не смог ибо не знаю как
  • Вопрос задан
  • 125 просмотров
Подписаться Простой 3 комментария
Решения вопроса 1
origami1024
@origami1024
went out for a night walk
if(rad[i].src=="1.png"){
  ...
} else ...

В любом из вариантов всегда происходит условие для if, else просто игнорируется. В чём причина понять не могу

Ты ошибаешься, у тебя происходит условие для else,
потому что rad[i].src при проверке равен не "1.png", а
"http://www.полный-адрес/1.png"

вот переделал, чтобы проверка была с последней частью адреса
function change(){
  let rad = document.querySelectorAll('.red');
  for(let i=0, len=rad.length; i<len; i++){
    if(rad[i].src.split("/").pop()=="1.png"){
      rad[i].src="2.png"
    } else {
      rad[i].src="1.png"
    }
  }
}

https://jsfiddle.net/r37ck8oq/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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