Вход

Просмотр полной версии : Не пойму результат classlist.contains


Storm03
20.02.2021, 10:56
На странице сайта открывается блок с описанием. Решил добавить плавности и сделал проверку, открыт блок или нет.
Проблема в том, что когда блок открыт, понятно, что у него добавлен класс "_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);
}

рони
20.02.2021, 11:11
Но js (первый алерт) выдаёт, будто у него класс "_close".
В html-е задан класс "_close".
что не так?

Storm03
20.02.2021, 11: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:13
что не так?
Так ведь после первого срабатывания класс меняется на "_open".

рони
20.02.2021, 11:48
Так ведь после первого срабатывания класс меняется на "_open".
значит вы что-то не договорили изначально.

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