Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.05.2019, 20:23
Интересующийся
Отправить личное сообщение для Sergius182 Посмотреть профиль Найти все сообщения от Sergius182
 
Регистрация: 11.08.2018
Сообщений: 27

Подскажите про this
есть к примеру такой код

<div onclick="f()">Жми!</div>

<script>
function f( ) {
this.innerHTML="Привет!";
};

</script>

Он не работает, объясните, пожалуйста, как через this можно поменять этот innerHTML. Объясните поподробней, я с объектами не программировал, про них мало знаю. Но читал, что такие элементы как див и проч js тоже рассматривает как объект
Ответить с цитированием
  #2 (permalink)  
Старый 25.05.2019, 20:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Sergius182,
<div onclick="f.bind(this)()">Жми!</div>

 <script>
 function f( ) {
 this.innerHTML="Привет!";
 };

 </script>
Ответить с цитированием
  #3 (permalink)  
Старый 25.05.2019, 22:27
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

похожая тема Что делает эта часть кода?
Цитата:
Но читал, что такие элементы как див и проч js тоже рассматривает как объект
Совершенно верно.
В твоем примере this указывает на window при клике на диве.
<div onclick="f()">Жми!</div><script>
function f( ) {
alert (this === window);
};</script>


(К.О.) При клике на див вызывается функция onclick а не функция f
<div onclick="f()" id="dv">Жми!</div><script>
function f( ) {
   this.innerHTML="Привет!";
};
alert ("--- тело функции onclick -----\r\n"+dv.onclick+"\r\n--- тело функции f -----\r\n"+f);
</script>


Можно явно свойству onclick присвоить ссылку на функцию f тогда this будет работать как ты и ожидаешь.
<div onclick="f()" id="dv">Жми!</div><script>
function f( ) {
   this.innerHTML="Привет!";
};
dv.onclick = f;
</script>

Последний раз редактировалось MallSerg, 25.05.2019 в 22:40.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как поступить. merzavchick jQuery 9 24.08.2012 23:57
Не правильно работает прокрутка, подскажите как сделать правильно? denfer12 Общие вопросы Javascript 0 09.05.2012 00:34
Подскажите, где ошибка? Вып. меню allasan Элементы интерфейса 2 13.03.2012 01:36
подскажите, как сделать индикатор «до начала загрузки страницы»? SergAG Элементы интерфейса 7 31.05.2011 19:53
Подскажите плизз с выбором селектора для select option frolvict jQuery 2 13.11.2010 15:29