addEventListener и передача параметров через функцию
Вложений: 1
Добрый вечер!
Подскажите пожалуйста, попытался у себя локально запустить данный примерhttps://learn.javascript.ru/coordina...tsionirovaniya. Проблема заключается в том, что не знаю, как передать вызов данной функции в переменную message |
Вложений: 1
Что-то скриншот здесь сильно ужимается..
|
Цитата:
Переменной можно присвоить некую функцию... Можно присвоить ссылку на функцию, которая была присвоена другой переменной... В переменную можно записать результат, который вернула некая функция... Но "передать вызов данной функции в переменную"... Как это понять? :blink: |
DenM,
пишите код, скриншоты потом. Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Да, речь шла о присвоении результата вызова функции
<p><button id="coords-show-mark">Кнопка с id=«coords-show-mark», сообщение появится под ней</button></p> let elem = document.getElementById("coords-show-mark"); function createMessageUnder(elem, html) { // создаём элемент, который будет содержать сообщение let message = document.createElement('div'); // для стилей лучше было бы использовать css-класс здесь message.style.cssText = "position:absolute; color: red"; // устанавливаем координаты элементу, не забываем про "px"! let coords = elem.getBoundingClientRect(); message.style.left = coords.left + "px"; message.style.top = coords.bottom + "px"; message.innerHTML = html; return message; } // Использование: // добавим сообщение на страницу на 5 секунд elem.addEventListener('click', createMessageUnder(elem, 'Hello, world!')); //let message = createMessageUnder(elem, 'Hello, world!'); document.body.append(message); setTimeout(() => message.remove(), 5000); |
Строки 22-25 так
elem.addEventListener('click', () => { const message = createMessageUnder(elem, 'Hello, world!'); document.body.append(message); setTimeout(() => message.remove(), 5000); }) |
DenM,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <p><button id="coords-show-mark">Кнопка с id=«coords-show-mark», сообщение появится под ней</button></p> <script> let elem = document.getElementById("coords-show-mark"); function createMessageUnder(elem, html, delay) { // создаём элемент, который будет содержать сообщение let message = document.createElement('div'); // для стилей лучше было бы использовать css-класс здесь message.style.cssText = "position:absolute; color: red"; message.innerHTML = html; let timer; return () => { window.clearTimeout(timer); let coords = elem.getBoundingClientRect(); // устанавливаем координаты элементу, не забываем про "px"! message.style.left = coords.left + "px"; message.style.top = coords.bottom + "px"; document.body.append(message); timer = setTimeout(() => message.remove(), delay); } } // Использование: // добавим сообщение на страницу на 5 секунд elem.addEventListener('click', createMessageUnder(elem, 'Hello, world!', 5000)); </script> </body> </html> |
Спасибо
|
Большое спасибо
|
Часовой пояс GMT +3, время: 18:18. |