Задать вопрос
@merindema
Одесса, 20 лет

Как грамотно использовать this в данном коде?

Доброго времени суток, смотрите - есть одна фунция myFun(), есть 3 кнопки(их потом может быть больше поэтому цикл), Мне надо по нажатию на какую либо кнопку, в алерте показывалось value этой кнопки.Но у меня почему то по нажатию показывается только value первой кнопки. По заданию в этом всем не может быть параметров, сугубо через классы и должен быть this. Но для меня this не очень понятно, сколько я читал. Помогите желательно без переделки моего кода, а с добавлением this. А лучше всего просто объяснить что бы я в итоге допер сам!

  • Вопрос задан
  • 244 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
А лучше всего просто объяснить что бы я в итоге допер сам!

Объясняю: включаешь голову, думаешь, гуглишь, ещё думаешь, делаешь. Вот так всё просто.
Ответ написан
@artem-dainov
Php, java, js. Boot spring, jquery, git
Этот this действует, когда ты на кнопку вешаешь обработчик.
Вот ты его подвесил, вот внутри него он и действует.
onclick="alert(this.value);"
Иначе он не работает.
Ты можешь в javascript подвесить его, типо так
btn.onclick = function() {
alert(this.value);
}
Но если ты хочешь, чтобы пользователь нажал любую кнопку и тебе выводило value, да и при чем кнопки могут автоматически создаваться, тогда только класс назначать и через него делать что-то подобное.
let classlist = document.getElementsByClassName('myclass');
let classlength = classlist.length-1;
for (i=0; i<=classlength; i++) {
classlist[i].onclick = function(e) {
alert(this.value);
}
}


Что тут произошло.
1. Получаем список элементов.
2. Получаем количество элементов и отнимаем единицу, так как отсчет начинается с нуля, а значит последний пункт будет undefined
3. Запускаем цикл по всем элементам и назначаем им событие onclick
Ну а дальше выводим в alert value кнопки.

Надеюсь понятно объяснил.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽