Конфликт с вложенными div и js

117
30 октября 2019, 02:40

Извините за вопрос, но я в CSS полный ноль. Есть страница с div и js. Задача js — скрывать изображение при клике. У меня никак не получается сделать так, чтобы они размещались горизонтально, вплотную друг к другу и чтобы при этом работал скрипт. Если убрать class="hide-on-click", то они будут горизонтально, но с интервалом между друг другом и js конечно же перестает работать. Если первый класс hide переименовать в hide-on-click, то при клике будут исчезать все картинки в нем, а нужно по отдельности.

<div class="hide">
  <div class="hide-on-click"><img width="350px" src="../image.png"></div>
  <div class="hide-on-click"><img width="350px" src="../image.png"></div>
  <div class="hide-on-click"><img width="350px" src="../image.png"></div>
  <div class="hide-on-click"><img width="350px" src="../image.png"></div>
</div>
<script>
(function () {
    var elements = document.getElementsByClassName('hide-on-click');
    for (var i = 0; i < elements.length; i++) {
        elements[i].addEventListener('click', function () {
            this.style.display = 'none';
        });
    }
})();
</script>

(function() { 
  var elements = document.getElementsByClassName('hide-on-click'); 
  for (var i = 0; i < elements.length; i++) { 
    elements[i].addEventListener('click', function() { 
      this.style.display = 'none'; 
    }); 
  } 
})();
<div class="hide"> 
  <div class="hide-on-click"><img width="350px" src="../image.png"></div> 
  <div class="hide-on-click"><img width="350px" src="../image.png"></div> 
  <div class="hide-on-click"><img width="350px" src="../image.png"></div> 
  <div class="hide-on-click"><img width="350px" src="../image.png"></div> 
</div>

Answer 1

(function() { 
  var elements = document.getElementsByClassName('hide-on-click'); 
  for (var i = 0; i < elements.length; i++) { 
    elements[i].addEventListener('click', function() { 
      this.style.display = 'none'; 
    }); 
  } 
})();
.hide-on-click { 
  border: 1px solid black; 
  background:lightgreen; 
  width:50px; 
  height:50px; 
  display: inline-block; 
  margin:0px; 
}
<div class="hide"> 
  <div class="hide-on-click"><img width="350px" src="../image.png"> 
  </div><div class="hide-on-click"><img width="350px" src="../image.png"> 
  </div><div class="hide-on-click"><img width="350px" src="../image.png"> 
  </div><div class="hide-on-click"><img width="350px" src="../image.png"></div> 
</div>

READ ALSO
Canvas анимация чрезмерно нагружает ноутбук

Canvas анимация чрезмерно нагружает ноутбук

Есть паттерн как задний фон, который медленно отклоняется при движении мышиЧтобы не рисовать каждый раз паттерн я сделал некий буфер, в котором...

102
Один код javascript для двух одинаковых id

Один код javascript для двух одинаковых id

Не подскажете, как сделать так, что бы javascript применялcя к двум блокам (gentags)? А то, на данный момент, все работает только на первом блокеЗаранее...

132
как сделать красивее код?

как сделать красивее код?

Красивее - коротко и ясно, а не с кучей макарон

141
Захватить разные скриншоты

Захватить разные скриншоты

Пытаюсь написать такой тест:

105