JavaScript

Подскажите про JavaScript про this

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

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

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

(/script)

Он не работает, объясните, пожалуйста, как через this можно поменять этот innerHTML. Объясните поподробней, я с объектами не программировал, про них мало знаю. Но читал, что такие элементы как див и проч js тоже рассматривает как объект
Вот так 100% будет работать
<div id="div">Жми! </div>
<script type="text/javascript">
div.onclick = function () {
this.innerHTML="Привет!";
}
АП
Антон Пунтусов
72 391
Лучший ответ
Талгат Жасузаков Да, через id будет работать, но если таких элементов которые вызывают одну и туже функцию, много, то она сможет только с одним записаным в ней идом работать
В спецификации языка тебе мало рассказано?
Хотя, учитывая использование onclick и innerHTML... забей, крч. Твои попытки понять, окажутся бесполезными.
Sweet Smith Мне взападло читать, я хочу что бы мне дядька из интернета рассказал!
<div onclick="f(this)">Жми! </div>

function f( bubu ) {
  bubu.innerText = "Привет!";
}

Так будет работать...

А onclick="..."

или тот же element.onclick = funcion()... обычно используют для простых кнопок, у которых очевидно есть только одна функция (закрыть какое-нибудь окошко и т. п.)

Минусы: 1. У onclick может быть только одно значение. Т. е. если уже есть один, а вы где-нибудь в другом месте в скрипте добавите еще один onclick для этого элемента - оба одновременно не будут работать. Один перепишет значение другого и он перестанет работать.

2. Задолбаетесь в HTML постоянно добавлять onclick="...", а потом захочется туда еще одну функцию добавить - всё заново редактировать.

Можно использовать:

<div id="bubu">Жми! </div>

var bubu = document.getElementById('bubu');
bubu.addEventListener('click', function(){
this.innerText = 'Бубу!';
});

_________

А вот innerHTML - innerText ...скорее формальность. Считается более грамотным писать innerText, если в тексте не будет содержаться HTML-код. Т. к. innerHTML тратит "ресурсы" на проверку всего текста на наличие HTML, чтобы выполнить его как код. А innerText сразу не разбирая ставит все символы как обычный текст. Хотя я не представляю, каких объемов должен быть передаваемый текст, чтобы разница реально ощущалась.
Витя Отачук
Витя Отачук
62 360
Талгат Жасузаков есть ли разница писать ?
document.getElementById('IDElem').innerHTML="Текст";
или
IDElem.innerHTML="Текст";
я обычно короче пишу, но в ютубе и прочих инструкциях почему-то любят использовать длинный вариант