[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Узнать активка кнопка или нет
maruo
Кнопка, которая открывает чат
 <div class="navbar-btn btn-group">

<
button data-toggle="dropdown" class="btn btn-sm dropdown-toggle">
<
span class="fa fa-comments fs14 va-m"></span>
<
span class="badge" id="count_online"></span>
</
button>
.................................


когда чат открыт то в класс добавляется open
<div class="navbar-btn btn-group open">
Когда закрыт то
<div class="navbar-btn btn-group">

Так вот мне нужно что бы сообщения в чат подгружались лишь когда открыт чат.
Как можно отследить узнать на jS что чат открыт?
maruo
Частично проблему решил, не получается остановить таймер

 function openchat(){

var timer = setInterval(function(){

var classList = document.getElementById('chat_n1').className.split(/\s+/);

for (var i = 0; i < classList.length; i++) {

if(classList[i] === 'open') {

alert('open');

}else{

clearInterval(timer);

}
}

}
, 1000);

}

При нажатии на кнопку открыть чат, запускается функция openchat()
А вместе с ним таймер.
Так вот если убрать условие else, то алерт как положено выводит каждую секунду.
А если с условием else то 1 раз отработает и все
Игорь_Vasinsky
получить класс кнопки и регуляркой определит наличие класса

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maruo
Игорь_Vasinsky
Это я уже сделал, выше сообщение, не могу найти ошибку не гляните своим глазом? по моей логике должно было работать
Игорь_Vasinsky
Цитата
А если с условием else то 1 раз отработает и все


ну тыж сам останавливаешь setInterval() то))

Цитата
clearInterval(timer);


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maruo
Игорь_Vasinsky
Начал пошагово изучать в чем проблема,

if(classList[i] === 'open') {

alert('open');

}else{

alert('close');
}

прописал так, и на таймер 1 секунду, так получается что сначала он находит open а потм каким то образом не находит и завершает

точнее наоборот, сначала не находит стиль, а потом находит
maruo
Решил задачу
 function openchat(){

function hasClass( elem , className ) {

var classList = elem.className.split(/\s+/);
for (var i = 0; i < classList.length; i++) {
if(classList[i] === className) {
return true;
}
}

return false;
}

var timer = setInterval(function() {

if( hasClass( document.getElementById('chat_n1') , 'open' ) ) {
alert('open');
} else {

clearInterval(timer);
}


}
, 1000);

}
SerginhoLD
просто оставлю это здесь
document.getElementById('chat_n1').classList.contains('open')


_____________
"internet explorer всех правильней отображает страницы" ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.