Javascript.RU

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

Не пойму результат classlist.contains
На странице сайта открывается блок с описанием. Решил добавить плавности и сделал проверку, открыт блок или нет.
Проблема в том, что когда блок открыт, понятно, что у него добавлен класс "_open". Но js (первый алерт) выдаёт, будто у него класс "_close". Хотя второй показывает, что "_open". В html-е задан класс "_close".
function description_show() {
	oll_frames_close();
	var t = 0;
	let c = document.getElementById("page_description"); alert(c.classList);
	if (c.classList.contains("page_description_open")) {
		c.classList.remove("page_description_open"), c.classList.add("page_description_close");
		t = 500;
	}
	let e = document.getElementById("description_body");
	var a = this.getAttribute("data-id");
	var d = new XMLHttpRequest;
	a = "id=" + a;
	d.open("POST", "service/xxxxxxxx.php", !0);
	d.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	d.addEventListener("readystatechange", function () {
		if (4 === d.readyState && 200 === d.status) {
			setTimeout(function () {
				e.innerHTML = d.responseText;
				c.classList.remove("page_description_close"), c.classList.add("page_description_open"); alert(c.classList);
			}, t);
		}
	});
	d.send(a);
}
Ответить с цитированием
  #2 (permalink)  
Старый 20.02.2021, 11:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Storm03
Но js (первый алерт) выдаёт, будто у него класс "_close".
Сообщение от Storm03
В html-е задан класс "_close".
что не так?
Ответить с цитированием
  #3 (permalink)  
Старый 20.02.2021, 11:12
Интересующийся
Отправить личное сообщение для Storm03 Посмотреть профиль Найти все сообщения от Storm03
 
Регистрация: 20.02.2021
Сообщений: 12

А!!! Я ТУПОЙ!!!!!!
В самом начале стоит вызов oll_frames_close();, Который и закрывает все окна!!! Ну, блин.... слов нет!!!
Правильно вот так:
var t = 0;
	let c = document.getElementById("page_description");
	if (c.classList.contains("page_description_open")) t = 500;
	oll_frames_close();

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

Сообщение от рони Посмотреть сообщение
что не так?
Так ведь после первого срабатывания класс меняется на "_open".
Ответить с цитированием
  #5 (permalink)  
Старый 20.02.2021, 11:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Storm03
Так ведь после первого срабатывания класс меняется на "_open".
значит вы что-то не договорили изначально.
Ответить с цитированием
  #6 (permalink)  
Старый 20.02.2021, 12:41
Интересующийся
Отправить личное сообщение для Storm03 Посмотреть профиль Найти все сообщения от Storm03
 
Регистрация: 20.02.2021
Сообщений: 12

Да, извините. Как обычно: "АААА! Всё пропало, ничего не работает", мысли путаются, правильно задать вопрос не получается)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести результат AJAX в div с динамическим ид voron121 AJAX и COMET 6 30.05.2016 18:46
Как передать результат в другую функцию hakudjin Общие вопросы Javascript 1 16.09.2015 11:52
Результат дистанции двух точек черех google map чтобы выводился на отдельную страницу fastabst Элементы интерфейса 2 01.12.2014 17:43
Форма поиска. Результат ken3013 Общие вопросы Javascript 0 29.11.2014 06:33
Получить результат выполнения скрипта на сервере в переменную ява gyper AJAX и COMET 5 19.11.2012 11:36