@Sanchik97

Как вывести значение атрибута, которое находится внутри тега?

Здравствуйте. Изучаю js и при решении одной задачи столкнулся с проблемой. Сама задача: "При нажатии кнопки «купить» выведите в консоль значение data-number того товара, на котором нажата кнопка"
HTML код:
<p>Товар один <button class="text123" data-num = "111">Купить</button></p>
	<p>Товар два <button class="text1" data-num = "222">Купить</button></p>
    <p>Товар три <button class="text2" data-num = "333">Купить</button></p>

JS код:
var button = document.getElementsByTagName('button');
for (var i = 0; i < button.length; i++) {
    var btn = button[i];
    btn.onclick = function(){
        alert(btn.getAttribute('data-num'));
    }
};

Проблема в том, что цикл каждый раз перезаписывает в переменую btn новое значение и в конце там будет только button с индексом 2, а значить при нажатии любой из кнопок и вызове функции у меня выведется "data-num" 3-ий кнопки (333). Но если в переменной btn не присваивать button[i], и написать внутри функции
alert(button[i].getAttribute('data-num'));
То в консоли будет ошибка о том, что button[i] не объявлена. Как можно решить эту проблему? Вот демка jsfiddle.net/nfLjbue7
  • Вопрос задан
  • 651 просмотр
Решения вопроса 2
TommyV888
@TommyV888
-
Замените:
alert(btn.getAttribute('data-num'));
На:
alert(this.getAttribute('data-num'));
Ответ написан
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Почитайте вот это по теме https://learn.javascript.ru/task/make-army и в дальнейшем больше не попадете на эту ловушку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы