Загрузка...

Как при клики на элемент сделать так, чтобы срабатывала функция только для кликнутого элемента?

Тема в разделе Frontend создана пользователем ErgoProxy1637 27 янв 2024. (поднята 28 янв 2024) 246 просмотров

Загрузка...
  1. ErgoProxy1637

    [IMG][IMG]
    [IMG][IMG]

    Привет, ребята. Нужна помощь. Сделал попап (новое учебное задание от тимлида) и вот какая проблема. При клики на пункт меню моя функция срабатывает для случайно выбранного элемента. Да я знаю, что, если обращаться к объекту (в JS все является объектами), в котором более одного элемента, то нужно использовать querySelectorAll, а не querySelector, тогда он будет проходиться по нему как по массиву, но прикол в том, что я хз как это сделать относительно элементов-тегов из моей верстке, тупо не выходит, ни циклами, ни условиями, хотя я знаю, что именно ими и нужно все это делать, как следствие querySelectorAll просто не работает показывая мне undefinded. Обычный же querySelector работает только для случайного элемента, как это показано на видео. Не подскажите как это дело реализовать
    P.S НЕНАВИЖУ НАТИВНЫЙ JS, ЕСЛИ С ФРЕЙМВОРКАМИ И БИБЛИОТЕКАМИ ТАКАЯ ЖЕ ИСТОРИЯ БУДЕТ, ТО В ПИЗДУ ЭТО ПРОГРМИРОВАНИЕ !
     
  2. good_players
    good_players 27 янв 2024 Лучшие, антиабуз домены - lolz.live/threads/111111 11 420 21 июл 2022
     
    1. Посмотреть предыдущие комментарии (2)
    2. good_players
      ErgoProxy1637, иногда чел загуглить даже не может:3
    3. ErgoProxy1637 Автор темы
      good_players, думаю на лулзе, таких даунов нету
  3. ChatGPT
    ChatGPT 27 янв 2024 2253 14 мар 2023
    Привет, ErgoProxy1637! Понимаю, что у тебя возникли проблемы с обработкой кликов на пункты меню в JavaScript. Для обработки кликов на конкретные элементы тебе действительно нужно использовать querySelectorAll, чтобы получить коллекцию элементов, а затем применить обработчик событий к каждому элементу. Вот пример, как это можно сделать:

    JavaScript

    // Получаем все элементы меню
    const menuItems = document.querySelectorAll('.menu-item');

    // Применяем обработчик событий к каждому элементу
    menuItems.forEach(item => {
    item.addEventListener('click', () => {
    // Твой код обработки клика на элемент меню
    });
    });
    Где '.menu-item' - это селектор, который соответствует твоим элементам меню. Замени его на соответствующий селектор из твоего кода.

    Надеюсь, это поможет тебе решить проблему. Если у тебя есть дополнительные вопросы, не стесняйся спрашивать!
     
    1. Посмотреть предыдущие комментарии (10)
    2. ErgoProxy1637 Автор темы
      ChatGPT, [IMG][IMG] НЕ РАБОТАЕТ!!!! СЦУКА НЕ РАБОТАЕТ!!! ДА, ЧТО ЗА ХРЕНЬ БЕСПОЛЕЗНУЮ СОЗДАЛИ В OPENAI!!!!!!
    3. ChatGPT
      Кажется, пользователь ErgoProxy1637 испытывает серьезные трудности. Могу ли я помочь вам чем-то еще?
  4. Falcon_Extra
    Falcon_Extra 29 янв 2024 Заблокирован(а) 108 22 окт 2023
    в функций сделай и все она само заработает если ты кочно работал по api
     
    1. ErgoProxy1637 Автор темы
      Falcon_Extra, я даже не знаю, что это. Могу лишь сказать, что фреймворки и библиотеки использовать мне запретили
  5. Formyworking
    Привет, возможно уже неактуально, но попробую помочь, я так понимаю у тебя блок расскрывается по клику на стрелочку

    Тогда нужно выбрать все стрелочки

    let manyArrows = document.querySelectorAll(".svg-vector");
    let chooseAllPopUp = document.querySelectorAll(".ur-popup__inputs-items-list");

    manyArrow.forEach((element, index) {
    element.addEventListener("click", () => {
    chooseAllPopUp[index].clientHeight == 0 ? chooseAllPopUp[index].style.height == chooseAllPopUp[index].scrollHeight + "20px" : blockClose[index].style.height = 0;
    })
    })

    Если не поможет код или уже решил, напиши мне в лс, надо бы ещё ccs глянуть, как у тебя там реализовано, но я предполагаю, что у элемента, который должен открываться у тебя высота стоит = 0
     
    1. ErgoProxy1637 Автор темы
      Formyworking, да ты прав, уже не актуально, но решение правильное ты скинул, спасибо
Top