Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите про this (https://javascript.ru/forum/misc/77603-podskazhite-pro.html)

Sergius182 25.05.2019 20:23

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

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

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

</script>

Он не работает, объясните, пожалуйста, как через this можно поменять этот innerHTML. Объясните поподробней, я с объектами не программировал, про них мало знаю. Но читал, что такие элементы как див и проч js тоже рассматривает как объект

рони 25.05.2019 20:42

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

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

 </script>

MallSerg 25.05.2019 22:27

похожая тема http://javascript.ru/forum/misc/7756...tml#post508075
Цитата:

Но читал, что такие элементы как див и проч 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>


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