Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.07.2023, 16:09
Новичок на форуме
Отправить личное сообщение для alexRas Посмотреть профиль Найти все сообщения от alexRas
 
Регистрация: 20.07.2023
Сообщений: 3

Кто-нибудь поможет?
Может кто-то из опытных сможет помочь?
Вот в чем проблема.
На сайте есть несколько <div id="event"> с анонсами событий.
В каждом <div id="event"> есть <div id="e_d">с датой события.
Есть скрипт, задача которого проанализировать первый <div> и если дата события уже прошла, удалить <div id="event">, затем перейти ко второму и т.д.
Проблема в том, что имеющийся скрипт анализирует только первый <div id="event">, удаляет его с экрана (но в коде он остается), а второй <div id="event"> уже не анализирует. Как решить эту задачу? Кто захочет повозиться, скину код скрипта.
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2023, 16:18
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,740

Значение атрибута ID должно быть уникальным в пределах документа, вместо id используйте class и работайте уже с ним.
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2023, 16:20
Новичок на форуме
Отправить личное сообщение для alexRas Посмотреть профиль Найти все сообщения от alexRas
 
Регистрация: 20.07.2023
Сообщений: 3

Спасибо, попробую.
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2023, 16:20
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,714

Сообщение от alexRas
На сайте есть несколько <div id="event">
id должен быть уникальным. Только у одного элемента может быть такой id
https://developer.mozilla.org/ru/doc..._attributes/id
Для того, что бы как то пометить группу элементов, что бы потом их выбрать, используйте атрибуты class или data-
Ответить с цитированием
  #5 (permalink)  
Старый 20.07.2023, 16:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,505

А с чего он, собственно, остаётся в коде? Всё работает:
<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"]'), но использовать его стоит если уж совсем никак не можешь исправить код на нормальный.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 20.07.2023, 16:25
Новичок на форуме
Отправить личное сообщение для alexRas Посмотреть профиль Найти все сообщения от alexRas
 
Регистрация: 20.07.2023
Сообщений: 3

К сожалению, после замены id на class, а # на . скрипт вообще перестал работать
Ответить с цитированием
  #7 (permalink)  
Старый 20.07.2023, 17:01
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,714

Покажите весь код и скрипт
Ответить с цитированием
  #8 (permalink)  
Старый 21.07.2023, 09:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Сообщение от 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>
Ответить с цитированием
  #9 (permalink)  
Старый 21.07.2023, 09:44
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,714

Сообщение от Aetae
 document.querySelector('#event').remove()
Сообщение от ksa
o.remove()
Вы не учитываете, что
Сообщение от alexRas
анализирует только первый <div id="event">, удаляет его с экрана (но в коде он остается)
Ответить с цитированием
  #10 (permalink)  
Старый 21.07.2023, 09:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто нибудь может решить эту задачу? Алексей Любимов Работа 0 28.02.2014 17:55
Прошу помощи скриптеров или кого либо кто поможет :) f00rZik Общие вопросы Javascript 13 05.01.2012 03:42
Нужна помощь Кто розбирается в js и кто поможет переделать его или создать заново Starpomlom Javascript под браузер 10 26.12.2011 14:46
Нужно реализовать таблицу со сроллингом и фиксированными заголовками - кто поможет? kinourl.info jQuery 50 10.11.2011 21:56
Кто нибудь подскажет onmouseout при ul > li > ul, или все Великие kudenv Элементы интерфейса 2 12.03.2011 12:34