Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Как скрыть блоки с одинаковыми классами кроме того кторый не нужно скрывать? (https://javascript.ru/forum/server/66038-kak-skryt-bloki-s-odinakovymi-klassami-krome-togo-ktoryjj-ne-nuzhno-skryvat.html)

Dydaevskiy 22.11.2016 11:44

Как скрыть блоки с одинаковыми классами кроме того кторый не нужно скрывать?
 
Здравствуйте друзья, столкнулся с задачкой для решения которой у меня не хватает опыта.
Имеется сайт с системой тестирования, все тесты отображаются в личном кабинете пользователя в виде списка, когда пользователь выбирает тест для прохождения он нажимает кнопку «Начать тестирование» после чего открывается тест и собственно начинается сам процесс тестирования. Но все тесты которые находятся в данном списке остаются, то есть не скрываются. Как заставить с помощью JS скрыть все тесты кроме того который проходит пользователь?
Для начала прохождения теста пользователь нажимает кнопку с таким содержимым:
<input class="wpProQuiz_button" type="button" value="Начать тест" name="startQuiz">
Может как-то прикрутить onclick к кнопке “ Начать тест ” ?
HTML содержимое страницы:
<div class="activtest"></div>
<div class="activtest"> Данный тест был открыт </div>
<div class="activtest"></div>
<div class="activtest"></div>
<div class="activtest"></div>

Буду благодарен за любой ответ, спасибо друзья.

Dydaevskiy 22.11.2016 12:23

Я не много продвинулся, как по клику дочернего элемента с class="wpProQuiz_button" скрыть при помощи JS все дивы которые находятся в id=rcl-tabs, кроме родителя (class="wpProQuiz_button") у которого class="activtest"?

ksa 22.11.2016 14:43

Цитата:

Сообщение от Dydaevskiy
Но все тесты которые находятся в данном списке остаются, то есть не скрываются. Как заставить с помощью JS скрыть все тесты кроме того который проходит пользователь?

Зачем хранить все тесты на странице? :blink:
Подгружай только один, какой нужен. Остальные так путь и лежат на сервере...

Dydaevskiy 22.11.2016 15:13

Дело в том что тестирование должно происходить в ЛК пользователя, и как следствие (нет возможности скрыть сайдбар панели ЛК) открытие теста так же должны быть в ЛК.
Уважаемый Ksa ksa, на данный момент вкурив не одну статью по JS картина происходящего (лично для меня) в корне изменилась как и требования к JS скрипту.
Чего необходимо добиться:
При не активном тесте, то есть отображается только список тестов имеются DIVы с классом activtest, при нажатии пользователем кнопки с классом wpProQuiz скрипту необходимо сделать следующее:
1)Найти ID прародительского DIVа того элемента по которому был произведен щелчок (в данном случае id=wpProQuiz_6).
2) Занести ID в переменную
3) Скрыть все DIVы с классом activtest ID которых не совпадает с ранее (пункт 2) найденным DIVом.


ksa 22.11.2016 15:35

Цитата:

Сообщение от Dydaevskiy
скрипту необходимо сделать следующее:
1)Найти ID прародительского DIVа того элемента по которому был произведен щелчок (в данном случае id=wpProQuiz_6).
2) Занести ID в переменную
3) Скрыть все DIVы с классом activtest ID которых не совпадает с ранее (пункт 2) найденным DIVом.

Неудачный подход... :no:
И сам алгоритм в частности.

Все тесты нужно отделить от страницы в целом....
Сначала показать список тестов. После выбора теста - подгрузить именно его.
Пусть начинают проходить.

И так поступать при любом выборе теста.

ksa 22.11.2016 15:36

Dydaevskiy, ты серверный язык вообще никакой не используешь?

Dydaevskiy 22.11.2016 16:14

Использую, но на этих тестах застрял.

Dydaevskiy 22.11.2016 16:33

Цитата:

Сообщение от ksa (Сообщение 435781)
Dydaevskiy, ты серверный язык вообще никакой не используешь?

Подскажите пожалуйста хотя бы какойнибудь вариант касаемо описанного мной в данном сообщении http://javascript.ru/forum/showthrea...756#post435777

ksa 22.11.2016 16:36

Цитата:

Сообщение от Dydaevskiy
пожалуйста хотя бы какойнибудь вариант касаемо описанного мной в данном сообщении

Делай тестовый пример - покажу на нем. :yes:

Dydaevskiy 22.11.2016 16:41

Допустим есть такой вариант:
Ставим на кнопку onClick="show();"

show.visible = 'done';
show.hidden = 'available';
 function show(){
 	show.hidden = show.visible;
 	show.visible = (show.visible === 'done')?'available':'done';
	document.getElementById(show.visible).style.display = 'block';
	document.getElementById(show.hidden).style.display = 'none';
}


Скрипт очень даже работает, ему только нужно указать ID прородителя.


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