@Va1tron

Почему не работает currenTarget.dataset.path в JS?

задание: создать табы.
при нажатии по одному остальные прячутся.

Это код из обучающего видео
При нажатии на один из button ему присваивается класс "tab_active"
Препод при помощи data-атрибутов сравнивает значение data-target со значением атрибута data-path активного таба. Значение data-path по идее передается в переменную way во время события (клик мышки).

Я не знаю в чем причина но мой WS ругается на попытку вытащить значение из атрибута data-path.

62605d1962422437250103.png

код в идэ перекатан. опечатка в последней строке поправлена
<ul class="work__step-list">
               <li class="work__step_item">
                    <button class="work__step-btn" data-path="one">1 шаг</button>
                </li>
                <li class="work__step_item">
                    <button class="work__step-btn" data-path="two">2 шаг</button>
                </li>
                <li class="work__step_item">
                    <button class="work__step-btn" data-path="three">3 шаг</button>
                </li>
                <li class="work__step_item">
                    <button class="work__step-btn" data-path="four">4 шаг</button>
                </li>
</ul>
<div class="work__steps">
                <div class="work__left">
                    <div class="work__step_tab tab_active" data-target="one">
                        <h3 class="work__step_title">Lorem ipsum</h3>
                        <p class="work_step_description">Lorem ipsum</p>
                    </div>
                    <div class="work__step_tab tab_active" data-target="two">
                        <h3 class="work__step_title">Lorem ipsum</h3>
                        <p class="work_step_description">Lorem ipsum</p>
                    </div>
                    <div class="work__step_tab tab_active" data-target="three">
                        <h3 class="work__step_title">Lorem ipsum</h3>
                        <p class="work_step_description">Lorem ipsum</p>
                    </div>
                    <div class="work__step_tab tab_active" data-target="four">
                        <h3 class="work__step_title">Lorem ipsum</h3>
                        <p class="work_step_description">Lorem ipsum</p>
                    </div>
                </div>
</div>

И код css
.work__step_tab{
	display: none;
}
.tab_active{
	display: block;
}


Собственно сам JS код
console.log('Начало скрипта Табов')
console.log('Загрузка ДОМ-дерева')
document.addEventListener('DOMContentLoaded', function () {
  // console.log(document.querySelectorAll('.work__step-btn'))
  document.querySelectorAll('.work__step-btn').forEach(function (tabsBtn) {
    console.log(tabsBtn)
    tabsBtn.addEventListener('click', function (event) {
      const way = event.currentTarget.dataset.path
      console.log(way)
      document.querySelectorAll('.work__step_tab').forEach(function (tabContent) {
        tabContent.classList.remove('tab_active')
      })
      document.querySelector('[data-target="${way}"]').classList.add('tab_active')
    })
  })
})
  • Вопрос задан
  • 422 просмотра
Пригласить эксперта
Ответы на вопрос 1
Armrisch
@Armrisch
Full Stack Developer
Используй this либо event.target
this.dataset.path
e.target.dataset

e.target -- означает клик на конкретный элемент, типа тег внутри родителя на котором конкретно сделан клик.
this -- указывает на родительский элемент на котором произошло событие.

в случае если будешь использовать this, смени фунцкии на стрелочные чтобы this был доступен.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 20:09
9000 руб./за проект
28 апр. 2024, в 19:54
2000 руб./за проект
28 апр. 2024, в 19:54
5000 руб./за проект