Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   this в функции (https://javascript.ru/forum/misc/75625-v-funkcii.html)

renton88 25.10.2018 14:36

this в функции
 
Здравствуйте. Сразу:
  1. только учусь
  2. гугл не помог, пробовал
Не работает функция, скорее всего из-за фундаментального пробела в знаниях. Буду признателен за краткое разъяснение.
<div class="parent-div"><h2 onclick="foo()">Some title</h2></div>

function foo() {
this.parentNode.style.background = ('blue');
}


В общем задача покрасить .parent-div кликом по h2. Пример условный, но максимально приближен к боевым условиям.

Консоль заявляет мне: "Uncaught TypeError: Cannot read property 'style' of undefined". Хотя если так:
<h2 onclick="this.parentNode.style.background = ('blue');">Title</h2>
то все работает.
Где именно я не прав?

Заранее мерси.

Белый шум 25.10.2018 14:44

<div class="parent-div"><h2 onclick="foo(this)">Some title</h2></div>
function foo(elem) {
elem.parentNode.style.background = ('blue');
}

this не передаётся в ф-ю сам по себе при её вызове.

renton88 25.10.2018 14:58

Спасибо. Вот тут и был пробел.

И дабы новых тем не плодить, скажите, конструкция
elem.parentNode.parentNode

является ли правильной, в случае если мне по domу надо на два узла вверх? Она работает, но насколько это правильно?

j0hnik 25.10.2018 16:38

Цитата:

Сообщение от renton88
является ли правильной,

Можете использовать. если вложенность будет больше, тогда лучше ориентироваться на какой-то селектор.

renton88 25.10.2018 17:03

Еще раз всем спасибо.


Часовой пояс GMT +3, время: 15:59.