Что мне нужно сделать, так это взять текст тегов заголовков один за другим, когда вы нажимаете клавишу «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? почему ты не используешь $('header')?
@MishelParkour api.jquery.com/header-селектор Потому что это не одно и то же.
@Taplar нет всех заголовков на странице
@vimuth next() находит только братьев и сестер.
большое спасибо, есть ли ключевое слово для поиска следующего элемента в dom?
@вимут. почему вы хотите перечислить их 1 на 1, когда пользователь нажимает клавишу? заголовки будут меняться на лету? Я имею в виду, например, будет ли меняться содержимое заголовков или количество тегов заголовков, пока пользователь продолжает нажимать клавишу?
Вам нужна переменная, содержащая все заголовки, с помощью которой вы можете использовать .index(currentHeader), чтобы получить индекс этого заголовка в стеке результатов, а перейти к следующему будет eq(index +1 )



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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() всякий раз, когда пользователь нажимает клавишу. что вы думаете о моей идее? -- потому что в вашем решении мы должны искать заголовки каждый раз, когда пользователь нажимает клавишу, и это может быть не самый оптимальный способ сделать это.
Большое спасибо, братан
@MishelParkour единственный поиск здесь — это headers. Все операции с заголовками являются внутренними для javascript, работающего со стеком результатов jQuery. В этот момент это не операция DOM.
@Taplar спасибо за информацию. Одна последняя вещь и больной дают удары. что делать, если индекс превышает максимальный индекс? вы можете добавить if или что-то еще, чтобы позаботиться об этом правильно?
Это правда. Хотя для этого я хотел бы спросить ОП, чего они хотят. Вы можете остановить логику или вернуться к первой. @вимут
наверное примерно так: if (headers.index(currentHeader) + 1<headers.length)
хорошо. так что дайте мне знать, если вы сделали обновление, и я проверю его. Благодарю.
:headerбратья и сестры?