Javascript.RU

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

Точный поиск элемента по классу
День добрый. Собственно суть. Есть, допустим, много дивов вот с такими именами классов:
<div class="event-container closed-task cancelled-task    ">
<div class="event-container closed-task cancelled-task CANCELLED    ">

Использую:
getElementsByClassName('event-container closed-task cancelled-task')
Мне возвращается nodelist с дивами имеющими оба описанных выше именами классов. Собственно вопрос - как в getElementsByClassName сделать поиск по точному совпадению имени класса?
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2017, 18:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

'event-container.closed-task.cancelled-task'
Ответить с цитированием
  #3 (permalink)  
Старый 08.08.2017, 08:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от laimas Посмотреть сообщение
'event-container.closed-task.cancelled-task'
Это не сработает...

<div class="event-container closed-task cancelled-task CANCELLED"></div>
<script type='text/javascript'>
var o=document.getElementsByClassName('event-container.closed-task.cancelled-task');
alert(o.length);
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 08.08.2017, 08:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от surru
как в getElementsByClassName сделать поиск по точному совпадению имени класса?
Почему именно getElementsByClassName?

Можно например так...
<div class="event-container closed-task cancelled-task"></div>
<div class="event-container closed-task cancelled-task CANCELLED"></div>
<script type='text/javascript'>
var o=document.querySelectorAll('.event-container.closed-task.cancelled-task:not(.CANCELLED)');
alert(o.length);
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 08.08.2017, 08:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ksa
Это не сработает.
Сработает:

document.querySelector('.event-container.closed-task.cancelled-task')
Ответить с цитированием
  #6 (permalink)  
Старый 08.08.2017, 08:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от laimas
Сработает
И это не сработает...
1. Автору нужно работать с getElementsByClassName
2. Твой вариант просто выберет первое совпадение. Если использовать querySelectorAll с твоим селектором - так же выберется 2 элемента

<div class="event-container closed-task cancelled-task"></div>
<div class="event-container closed-task cancelled-task CANCELLED"></div>
<script type='text/javascript'>
var o=document.querySelectorAll('.event-container.closed-task.cancelled-task');
alert(o.length);
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 08.08.2017, 08:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ksa
Твой вариант просто выберет первое совпадение.
Ну это уже не мои проблемы, заказан поиск по составному классу, пусть применяет метод подобающий, а то что querySelectorAll выберет несколько, то так и должно. Если нужно выбрать N-ый из этого набора, значит пусть указывает дополнительный селектор, какие проблемы?
Ответить с цитированием
  #8 (permalink)  
Старый 08.08.2017, 08:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от laimas
Ну это уже не мои проблемы
Потопил...
Ответить с цитированием
  #9 (permalink)  
Старый 08.08.2017, 08:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от laimas
Если нужно выбрать N-ый из этого набора, значит пусть указывает дополнительный селектор, какие проблемы?
Автору нужны элементы только (!) с таким набором. Элементы с такими классами + еще какие-то ему не нужны.
Т.о. твой селектор ему не поможет.
Ответить с цитированием
  #10 (permalink)  
Старый 08.08.2017, 09:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ksa
Автору нужны элементы только (!) с таким набором.
Я не знаю какие у него наборы, но если указанного составного класса и исключая .... кто мешает добавить :not(....)?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск элемента в DOM AlexandrT Общие вопросы Javascript 0 17.10.2016 14:29
Поиск элемента на странице для условия SloGS Javascript под браузер 10 05.05.2016 19:10
Выбор элемента по классу serggrodno jQuery 1 12.04.2016 13:22
Поиск элемента по классу vavich Events/DOM/Window 14 01.10.2013 16:09
Поиск элемента по классу shaltay jQuery 5 20.01.2013 18:38