Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как отменить выполнение функции js?

Владимир Псай Просветленный (28618), закрыт 5 лет назад
Написал функцию, что бы баннер сворачивался в трей по нажатию на иконку "свернуть".
Теперь надо написать что бы по нажатию на иконку "развернуть" баннер возвращался на свое место.
//Свернуть баннер в трей (работает норм)
let hide_cont = document.querySelector('.hide_cont');
let contacts = document.querySelector('.contacts');
let kontakte = document.querySelector('.kontakte');

hide_cont.onclick = function (){
contacts.style.display = "flex";
contacts.style.justifyContent = "space-around";
contacts.style.width = "1000px";
contacts.style.height = "120px";
contacts.style.top = "665px";
contacts.style.left = "20px";
kontakte.style.display = "none";
}

//Вернуть баннер на место (Не работает)
let show_cont = document.querySelector('.show_cont');
show_cont.onclick = function (){
hide_cont()=null;
}
Дополнен 5 лет назад
Дополнен 5 лет назад
codepen.io/vvv7220/pen/jdOevo
Лучший ответ
Petr Muhurov Мыслитель (5922) 5 лет назад
Залейте код в какую-нибудь песочницу, мало сэмплов
btw, hide_cont()=null; - бред, откройте консоль
Upd.
kontakte.style.display = "что было до none"
Владимир ПсайПросветленный (28618) 5 лет назад
я знаю что бред. как не бред написать? Я не знаю как отменять функцию. В голове помойка из кода. Помню что когда то null использовал, а как не помню
Petr Muhurov Мыслитель (5922) функцию нельзя отменить, можно вызвать новую функцию, которая изменит состояние на предыдущее до выполнения первой. kontakte.style.display = "что было до none"
Владимир ПсайПросветленный (28618) 5 лет назад
посмотри пожалуйста, что не так делаю. Не работает.
codepen.io/vvv7220/pen/jdOevo
Petr Muhurov Мыслитель (5922) в таких случаях нужно консоль открывать) сверху нет кода let show_cont = document.querySelector('.show_cont');
Остальные ответы
Татьяна Шеховцова Искусственный Интеллект (419745) 5 лет назад
Как неудобно написано...
Проще класс добавлять-убирать по клику. Некий аналог $.toggleClass написать
Petr MuhurovМыслитель (5922) 5 лет назад
для этого есть HTMLElement.classList.toggleClass()
Petr Muhurov Мыслитель (5922) вернее classList.toggle()
Владимир ПсайПросветленный (28618) 5 лет назад
Отлично. Я не знал еще об этой фишке.
Ярослав Искусственный Интеллект (107837) 5 лет назад
Делается это не так... Используй CSS типа .hidden { display: none; } который лучше поместить в head в тег style (не в css-файл), и скрипт типа такого:
document.addEventListener('DOMContentLoaded', () => {
 const qS = s => document.querySelector(s);
 ['.show_cont', '.hide_cont', '.map'].forEach(
  c => qS(c).addEventListener('click', foo)
 );
 function foo(e) {
  let toHide = !e.target.matches('.show_cont');
  qS('.kontakte').classList.toggle('hidden', toHide);
  ['.contacts', '.hide_cont'].forEach(
   c => qS(c).classList.toggle('hidden', !toHide)
  );
 }
});
Всем элементам стили прописываешь как при показе, а в разметке добавляешь класс hidden изначально скрытым...
Владимир ПсайПросветленный (28618) 5 лет назад
Это конечно круто. Одно плохо, что я ничего из этого не пойму. А мне надо для обучения, что бы я понимал что делаю.
Ярослав Искусственный Интеллект (107837) Так это простейший JS - всего пара методов используется.
Похожие вопросы