|
12.06.2021, 09:42
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 42
|
|
Перегрузить js файл.
Здравствуйте. Как правильно перегрузить js файл? У меня всё, что не пробую он начинает двоиться, троится, и так далее. Предварительно делаю remove, но потом, на элементе по cliсk в списке по 2 и более вызовов функции. Спасибо.
|
|
12.06.2021, 10:04
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от HotReboot
|
Как правильно перегрузить js файл?
|
зачем?
|
|
12.06.2021, 10:13
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 42
|
|
рони,
Часть html страницы подгружается через ajax в которых есть элементы используемые этим js файлом. И он не видит их потому что js загружен до загрузки этих элементов.
|
|
12.06.2021, 10:30
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от HotReboot
|
И он не видит их потому что js загружен до загрузки этих элементов.
|
Правильно делай обработку "новых" элементов и не нужно будет ничего "перегружать".
Вот почитай статейку...
https://learn.javascript.ru/event-delegation
|
|
12.06.2021, 10:44
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 42
|
|
ksa,
Я что-то подобное читал, но, например, вот этот код у меня не работает (все input подгружаются после загрузки всей страницы) пока я не перегружу js скрипт.
|
|
12.06.2021, 11:05
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от HotReboot
|
все input подгружаются после загрузки всей страницы
|
Нужно вешать обработчик на их родительский элемент, что будет на странице вместе со скриптом.
И в том обработчике выполнять все действия, связанные с инпутами.
Это и называется "делегирование" событий.
|
|
12.06.2021, 11:15
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Вот небольшая демонстрация твоей "подгрузки" инпутов...
<!DOCTYPE html>
<html>
<head>
<!--
<script src='https://code.jquery.com/jquery-latest.min.js'></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
document.addEventListener('DOMContentLoaded', () => {
const o = document.querySelector('#test')
o.addEventListener('input', function(e){
alert(e.target.value)
})
setTimeout(() => {
const html = `
<input type='text' name='itm0' /><br />
<input type='text' name='itm1' />
`
o.innerHTML = html
}, 3000)
})
</script>
</head>
<body>
<form id='test'>Подождите, выполняется загрузка контента...<form>
</body>
</html>
|
|
12.06.2021, 15:12
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 42
|
|
Меня всегда интересовало почему, когда пишут документацию программисты, они в примерах приводят не слишком понятный код. Порой встречаешь описание функции в которой используется другая функция, но по книги описание второй функции далеко дальше. Почему обязательно нужно впихивать лишние, вместо того что бы показать просто короткий код? При чём самая тяжелая документация для восприятия это именно у фронтендщиков. Обязательно нужно для объяснения чего-то одного всё завернуть в кучу другого.
Последний раз редактировалось HotReboot, 12.06.2021 в 15:24.
|
|
12.06.2021, 16:37
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
HotReboot, потому что жизнь - боль.
__________________
29375, 35
|
|
12.06.2021, 23:15
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от HotReboot
|
Почему обязательно нужно впихивать лишние, вместо того что бы показать просто короткий код?
|
Ты бы привел пример такого "сложного" и как бы ты это проиллюстрировал чем-то простым...
Без примеров все звучит голословно и так же не понятно.
Сообщение от HotReboot
|
Порой встречаешь описание функции в которой используется другая функция, но по книги описание второй функции далеко дальше.
|
Ты сам книги писал?
Попробуй сам написать какую-либо книжку - узнаешь какие проблемы бывают у авторов.
Последний раз редактировалось ksa, 12.06.2021 в 23:18.
|
|
|
|