Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2016, 00:10
Новичок на форуме
Отправить личное сообщение для vmetnev@mail.ru Посмотреть профиль Найти все сообщения от vmetnev@mail.ru
 
Регистрация: 27.05.2016
Сообщений: 4

Запуск функции по клику
Коллеги, не могу понять по какому принципу нужно добавлять event listners к элементам. Есть простой код HTML:
<html>
<body id="all">
<div id="popcorn"><p>popcorn </p></div> 
<a href="#" id="disclamer" onclick="mayday()">Disclamer</p></a>   
</body>
</html>


При нажатии на Disclamer запускается функция mayday(). Функция затемняет body, показывает как бы новое окно, добавляет к body event listner по клику мышки, и при нажатии мышки происходит удаление этого окна с использованием функции norma(). Проблема в том, что при нажатии на Dislamer запускается и mayday(), и сразу же запускается norama(). Как их развести, чтобы norma() запускалась не по тому же клику, а по следующему? Код JS следующий:
function mayday(){
xx=document.getElementById("all");
  xx.style.background="#999999";
  xx.style.zIndex="1";
 // xx.style.opacity="0.5";
  texttext="There have been the greatest changes in the life surroundings and conditions of human being during the present century!";
 var win=document.createElement('div');
  win.innerHTML=texttext;
  win.id="win";
  win.style.border="solid black 1px";
  win.style.background="white";
  win.style.color="black";
  win.style.zIndex="1000";
  win.style.opacity="1.0";
  win.style.position="absolute";
  win.style.top="25%";
  win.style.left="25%";
  win.style.width="25%";
  win.style.height="25%";
  parentElem=document.body;
  parentElem.appendChild(win);
  document.getElementById("all").addEventListener("click",norma);
};
 
 
function norma(){ 
//alert("here");
xx=document.getElementById("all");
xx.style.background="#ffffff";
xx.style.zIndex="100"; 
  parentElem=document.body;
  zz=document.getElementById("win");
  parentElem.removeChild(zz);
};
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2016, 00:14
Новичок на форуме
Отправить личное сообщение для vmetnev@mail.ru Посмотреть профиль Найти все сообщения от vmetnev@mail.ru
 
Регистрация: 27.05.2016
Сообщений: 4

Аааааааааааааааааааааа...е
нужно добавлять следующий event listner на mousedown!!!! Ура!!!
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2016, 12:14
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

vmetnev@mail.ru,
Все дело во всплытии!
https://jsfiddle.net/2mdv5rkp/
строка № 3 .
почитай на эту тему https://learn.javascript.ru/event-bubbling
да и перепишите свой код...

Последний раз редактировалось DynkanMaclaud, 28.05.2016 в 12:16.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск функции mrKot Общие вопросы Javascript 3 16.01.2016 06:17
Запуск функции после загрузки дива qwe88 Общие вопросы Javascript 18 01.09.2015 10:40
Запуск функции с задержкой Hapson Общие вопросы Javascript 14 02.04.2014 18:45
Запуск скрипта по клику psychomonkey jQuery 7 21.01.2014 15:49
Вызов функции к элементу по клику (jquery) sogologo Общие вопросы Javascript 18 13.10.2012 19:14