Задать вопрос
ikanyshev
@ikanyshev
Python developer

Как сделать так, что после нажатия на любую ссылку в определенном блоке #menu document.location.hash передавался другой функции?

У меня есть блок меню с ссылками типа
a href="#name"
Необходимо сделать скрипт на js, который будет при нажатии на любую ссылку в блоке div#head div#menu отправлять document.location.hash функции setBlock()
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
document.querySelectorAll('#menu a').forEach(function(link){ // находим все ссылки в меню
  link.addEventListener('click', function(evt){ // добавляем обработчик клика
    setBlock(location.hash) // отправляем 
  })
})

Догадываюсь, что вы хотели что-то другое, но описали вы именно это.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trushka
@trushka
используйте шо-то типа window.onhashchange=setBlock.
А чтоб не прыгало при клике и смене hash - можно блоки с соответствующими id делать с display:none и либо показывать их по hashcange, либо ставить их перед нужными блоками, а доступ к блоку получать, например, как querySelector(location.hash'+*'). Или можно попробовать поставить перед блоком с нужным id якорь с таким же name и display:none, хотя я не уверен, что прокрутка не будет прыгать к блоку с таким id, так как якорь хоть и первый, но скрытый.. В общем, можно поэксперементировать)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 16:42
2000 руб./за проект
18 дек. 2024, в 16:33
2000 руб./в час
18 дек. 2024, в 16:06
5000 руб./за проект