Возьмите текст тегов заголовков один за другим

Что мне нужно сделать, так это взять текст тегов заголовков один за другим, когда вы нажимаете клавишу «h». Это мой код,

var currentHeader;
currentHeader = $(":header").first(); 

$(window).on('keyup', function (e) {
    if (e.which === 72){ //h = 72
        alert(currentHeader.text());
        currentHeader = currentHeader.next(":header");
    } 
});

К сожалению, этот код не работает должным образом, и сообщение об ошибке не передается :'(

What I need is alert the next header tag text each time I press the 'h' key

:header братья и сестры?

Taplar 28.05.2019 16:56

почему вы используете :header? почему ты не используешь $('header')?

Mishel Parkour 28.05.2019 16:57

@MishelParkour api.jquery.com/header-селектор Потому что это не одно и то же.

Taplar 28.05.2019 16:57

@Taplar нет всех заголовков на странице

vimuth 28.05.2019 16:57

@vimuth next() находит только братьев и сестер.

Taplar 28.05.2019 16:58

большое спасибо, есть ли ключевое слово для поиска следующего элемента в dom?

vimuth 28.05.2019 16:59

@вимут. почему вы хотите перечислить их 1 на 1, когда пользователь нажимает клавишу? заголовки будут меняться на лету? Я имею в виду, например, будет ли меняться содержимое заголовков или количество тегов заголовков, пока пользователь продолжает нажимать клавишу?

Mishel Parkour 28.05.2019 17:00

Вам нужна переменная, содержащая все заголовки, с помощью которой вы можете использовать .index(currentHeader), чтобы получить индекс этого заголовка в стеке результатов, а перейти к следующему будет eq(index +1 )

Taplar 28.05.2019 17:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
var headers = $(":header");
var currentHeader = headers.first(); 

$(window).on('keyup', function (e) {
    if (e.which === 72){ //h = 72
        alert(currentHeader.text());
        // go to the next indexed header on the page, after the current header
        currentHeader = headers.eq( headers.index(currentHeader) + 1 );
    } 
});

таплар. это должно работать. но я думаю о лучшем решении. что-то вроде получения всех заголовков в массиве, а затем наличия наблюдаемого, и мы можем вызывать obs.next() всякий раз, когда пользователь нажимает клавишу. что вы думаете о моей идее? -- потому что в вашем решении мы должны искать заголовки каждый раз, когда пользователь нажимает клавишу, и это может быть не самый оптимальный способ сделать это.

Mishel Parkour 28.05.2019 17:04

Большое спасибо, братан

vimuth 28.05.2019 17:30

@MishelParkour единственный поиск здесь — это headers. Все операции с заголовками являются внутренними для javascript, работающего со стеком результатов jQuery. В этот момент это не операция DOM.

Taplar 28.05.2019 17:33

@Taplar спасибо за информацию. Одна последняя вещь и больной дают удары. что делать, если индекс превышает максимальный индекс? вы можете добавить if или что-то еще, чтобы позаботиться об этом правильно?

Mishel Parkour 28.05.2019 17:46

Это правда. Хотя для этого я хотел бы спросить ОП, чего они хотят. Вы можете остановить логику или вернуться к первой. @вимут

Taplar 28.05.2019 17:48

наверное примерно так: if (headers.index(currentHeader) + 1<headers.length)

Mishel Parkour 28.05.2019 17:49

хорошо. так что дайте мне знать, если вы сделали обновление, и я проверю его. Благодарю.

Mishel Parkour 28.05.2019 17:50

Другие вопросы по теме