Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Перегрузить js файл. (https://javascript.ru/forum/events/82685-peregruzit-js-fajjl.html)

HotReboot 12.06.2021 09:42

Перегрузить js файл.
 
Здравствуйте. Как правильно перегрузить js файл? У меня всё, что не пробую он начинает двоиться, троится, и так далее. Предварительно делаю remove, но потом, на элементе по cliсk в списке по 2 и более вызовов функции. Спасибо.

рони 12.06.2021 10:04

Цитата:

Сообщение от HotReboot
Как правильно перегрузить js файл?

зачем?

HotReboot 12.06.2021 10:13

рони,
Часть html страницы подгружается через ajax в которых есть элементы используемые этим js файлом. И он не видит их потому что js загружен до загрузки этих элементов.

ksa 12.06.2021 10:30

Цитата:

Сообщение от HotReboot
И он не видит их потому что js загружен до загрузки этих элементов.

Правильно делай обработку "новых" элементов и не нужно будет ничего "перегружать". :nono:
Вот почитай статейку...
https://learn.javascript.ru/event-delegation

HotReboot 12.06.2021 10:44

ksa,
Я что-то подобное читал, но, например, вот этот код у меня не работает (все input подгружаются после загрузки всей страницы) пока я не перегружу js скрипт.

ksa 12.06.2021 11:05

Цитата:

Сообщение от HotReboot
все input подгружаются после загрузки всей страницы

Нужно вешать обработчик на их родительский элемент, что будет на странице вместе со скриптом.
И в том обработчике выполнять все действия, связанные с инпутами.
Это и называется "делегирование" событий.

ksa 12.06.2021 11:15

Вот небольшая демонстрация твоей "подгрузки" инпутов...

<!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>

HotReboot 12.06.2021 15:12

Меня всегда интересовало почему, когда пишут документацию программисты, они в примерах приводят не слишком понятный код. Порой встречаешь описание функции в которой используется другая функция, но по книги описание второй функции далеко дальше. Почему обязательно нужно впихивать лишние, вместо того что бы показать просто короткий код? При чём самая тяжелая документация для восприятия это именно у фронтендщиков. Обязательно нужно для объяснения чего-то одного всё завернуть в кучу другого.

Aetae 12.06.2021 16:37

HotReboot, потому что жизнь - боль.

ksa 12.06.2021 23:15

Цитата:

Сообщение от HotReboot
Почему обязательно нужно впихивать лишние, вместо того что бы показать просто короткий код?

Ты бы привел пример такого "сложного" и как бы ты это проиллюстрировал чем-то простым...
Без примеров все звучит голословно и так же не понятно.

Цитата:

Сообщение от HotReboot
Порой встречаешь описание функции в которой используется другая функция, но по книги описание второй функции далеко дальше.

Ты сам книги писал? :D
Попробуй сам написать какую-либо книжку - узнаешь какие проблемы бывают у авторов. ;)


Часовой пояс GMT +3, время: 11:34.