@avikik

Почему onclick срабатывает не на том div?

Всем доброго времени!Проблема такова:
Циклом создаю div-ы на странице и в конце вешаю на него обработчик.
по нажатию на нужный мне див он должен менять содержимое, но проблема в том, что когда нажимаю на нужный мне блок, содержимое меняет всегда только последний блок.Хотя как я понял обработчик клика весит на всех блоках и он должен менять содержимое на нужном мне. В чем проблема?
<body>
    <p>поле</p>
    <div id = "home">

    </div>
    <script src="learnjs.js"></script>

</body>


[data-view = "pole"]
{
    width: 200px;
    height: 200px;
    background-color: rgb(80, 168, 190);
    float: left;
    margin: 2px; 
}
.pole-blue
{
    background: rgb(180, 70, 180);
}

var home = document.getElementById('home');

for(var i = 0;i<10;i++)
{
 var pole = document.createElement('div');
  pole.dataset.item = i;
  pole.dataset.view = "pole";
  home.appendChild(pole);

  pole.onclick = function()
  {
      if(this.className != 'pole-blue')
      {
          pole.className = 'pole-blue';
      }
  }
  
}
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@alexalexes
Потому что к элементу, на котором произошло событие, нужно выходить через e.target, то есть использовать дескриптор события e.
pole.onclick = function(e)
  {
      if(e.target.getAttribute('class') != 'pole-blue')
      {
          e.target.setAttribute('class', 'pole-blue');
      }
  }

Еще момент, переменная через var должна быть объявлена один раз, переопределять через var нельзя.
var pole = null;
for(var i = 0;i<10;i++)
{
  pole = document.createElement('div');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы