Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.10.2018, 14:36
Аватар для renton88
Новичок на форуме
Отправить личное сообщение для renton88 Посмотреть профиль Найти все сообщения от renton88
 
Регистрация: 26.07.2016
Сообщений: 6

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>
то все работает.
Где именно я не прав?

Заранее мерси.
Ответить с цитированием
  #2 (permalink)  
Старый 25.10.2018, 14:44
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

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

this не передаётся в ф-ю сам по себе при её вызове.
Ответить с цитированием
  #3 (permalink)  
Старый 25.10.2018, 14:58
Аватар для renton88
Новичок на форуме
Отправить личное сообщение для renton88 Посмотреть профиль Найти все сообщения от renton88
 
Регистрация: 26.07.2016
Сообщений: 6

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

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

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

Последний раз редактировалось renton88, 25.10.2018 в 15:01.
Ответить с цитированием
  #4 (permalink)  
Старый 25.10.2018, 16:38
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от renton88
является ли правильной,
Можете использовать. если вложенность будет больше, тогда лучше ориентироваться на какой-то селектор.
Ответить с цитированием
  #5 (permalink)  
Старый 25.10.2018, 17:03
Аватар для renton88
Новичок на форуме
Отправить личное сообщение для renton88 Посмотреть профиль Найти все сообщения от renton88
 
Регистрация: 26.07.2016
Сообщений: 6

Еще раз всем спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача результата функции, другой функции Aleksandr Chirkov Элементы интерфейса 3 24.06.2017 17:32
Можно ли так использовать callback функции? Denwf Node.JS 2 14.03.2017 10:20
Изменение прототипа функции tsigel Общие вопросы Javascript 11 15.05.2014 01:03
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21