Как передать элемент, который вызвал событие, и изменить его свойство? - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь изменить background-color элемента <div>.Элемент вызывает событие и вызывает функцию, включающую элемент в качестве аргумента, через this.

Как изменить свойства элементов?

Я попытался присвоить переданный элемент переменной и многим другим методам проб и ошибок, которые я не могу вспомнить.

newDiv = document.addEventListener('mouseover', doSomething(this));

// Some code here

function doSomething(item)
{
  item.style.backgroundColor = '#FFFFFF';
}

Я ожидаю, что цвет фона элемента изменится на #FFFFFF, но я получаю это сообщение об ошибке: TypeError: item.style is undefined

1 Ответ

0 голосов
/ 20 апреля 2019

Вызов функции следующим образом doSomething(this) не в порядке.Вы фактически связываете возвращаемое значение из функции doSomething.

. Механизм js автоматически связывает в качестве лексического контекста элемент, инициирующий событие, поэтому вы можете использовать this context:

this.style.backgroundColor = '#FFFFFF';

Или вы можете использовать событие, которое передается как параметр в обработчик:

document.addEventListener('mouseover', doSomething);
function doSomething(e) {
   e.target.style.backgroundColor = '#FFFFFF';
}
...