Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Кто-нибудь поможет? (https://javascript.ru/forum/project/85382-kto-nibud-pomozhet.html)

alexRas 20.07.2023 16:09

Кто-нибудь поможет?
 
Может кто-то из опытных сможет помочь?
Вот в чем проблема.
На сайте есть несколько <div id="event"> с анонсами событий.
В каждом <div id="event"> есть <div id="e_d">с датой события.
Есть скрипт, задача которого проанализировать первый <div> и если дата события уже прошла, удалить <div id="event">, затем перейти ко второму и т.д.
Проблема в том, что имеющийся скрипт анализирует только первый <div id="event">, удаляет его с экрана (но в коде он остается), а второй <div id="event"> уже не анализирует. Как решить эту задачу? Кто захочет повозиться, скину код скрипта.

Nexus 20.07.2023 16:18

Значение атрибута ID должно быть уникальным в пределах документа, вместо id используйте class и работайте уже с ним.

alexRas 20.07.2023 16:20

Спасибо, попробую.

voraa 20.07.2023 16:20

Цитата:

Сообщение от alexRas
На сайте есть несколько <div id="event">

id должен быть уникальным. Только у одного элемента может быть такой id
https://developer.mozilla.org/ru/doc..._attributes/id
Для того, что бы как то пометить группу элементов, что бы потом их выбрать, используйте атрибуты class или data-

Aetae 20.07.2023 16:23

А с чего он, собственно, остаётся в коде? Всё работает:
<div id="event">1</div>
<div id="event">2</div>
<div id="event">3</div>
<div id="event">4</div>

<button onclick="deleteNext()">delete next</button>
<script>function deleteNext(){
  document.querySelector('#event').remove()
}</script>

Это во-первых.

А во-вторых, много одинковых id на странице - это говнокод и нарушение стандарта. id - это уникальный идентификатор и может быть на странице только один. Используйте калассы или data-x аттибуты.

Ну в-третьих:способ таки получить все id на странице вопреки стандарту есть: document.querySelectorAll('[id="event"]'), но использовать его стоит если уж совсем никак не можешь исправить код на нормальный.

alexRas 20.07.2023 16:25

К сожалению, после замены id на class, а # на . скрипт вообще перестал работать:)

voraa 20.07.2023 17:01

Покажите весь код и скрипт

ksa 21.07.2023 09:04

Цитата:

Сообщение от alexRas
Проблема в том, что имеющийся скрипт анализирует только первый <div id="event">, удаляет его с экрана (но в коде он остается), а второй <div id="event"> уже не анализирует. Как решить эту задачу?

Можно использовать нечто такое...

<div class="event">
	<div class="e_d">1</div>
</div>
<div class="event">
	<div class="e_d">2</div>
</div>
<div class="event">
	<div class="e_d">3</div>
</div>

<script>
document.querySelectorAll('.event').forEach(o => {
	console.log(o)
	const d = o.querySelector('.e_d').textContent
	// тут нужно проверать дату
	o.remove()
})

  
</script>

voraa 21.07.2023 09:44

Цитата:

Сообщение от Aetae
 document.querySelector('#event').remove()

Цитата:

Сообщение от ksa
o.remove()

Вы не учитываете, что
Цитата:

Сообщение от alexRas
анализирует только первый <div id="event">, удаляет его с экрана (но в коде он остается)


ksa 21.07.2023 09:59

Цитата:

Сообщение от voraa
Вы не учитываете, что

Далее пусть сам ТС решает что ему нужно делать, а это просто пример обхода элементов...


Часовой пояс GMT +3, время: 00:03.