Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2021, 09:42
Аспирант
Отправить личное сообщение для HotReboot Посмотреть профиль Найти все сообщения от HotReboot
 
Регистрация: 06.11.2017
Сообщений: 42

Перегрузить js файл.
Здравствуйте. Как правильно перегрузить js файл? У меня всё, что не пробую он начинает двоиться, троится, и так далее. Предварительно делаю remove, но потом, на элементе по cliсk в списке по 2 и более вызовов функции. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2021, 10:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от HotReboot
Как правильно перегрузить js файл?
зачем?
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2021, 10:13
Аспирант
Отправить личное сообщение для HotReboot Посмотреть профиль Найти все сообщения от HotReboot
 
Регистрация: 06.11.2017
Сообщений: 42

рони,
Часть html страницы подгружается через ajax в которых есть элементы используемые этим js файлом. И он не видит их потому что js загружен до загрузки этих элементов.
Ответить с цитированием
  #4 (permalink)  
Старый 12.06.2021, 10:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от HotReboot
И он не видит их потому что js загружен до загрузки этих элементов.
Правильно делай обработку "новых" элементов и не нужно будет ничего "перегружать".
Вот почитай статейку...
https://learn.javascript.ru/event-delegation
Ответить с цитированием
  #5 (permalink)  
Старый 12.06.2021, 10:44
Аспирант
Отправить личное сообщение для HotReboot Посмотреть профиль Найти все сообщения от HotReboot
 
Регистрация: 06.11.2017
Сообщений: 42

ksa,
Я что-то подобное читал, но, например, вот этот код у меня не работает (все input подгружаются после загрузки всей страницы) пока я не перегружу js скрипт.
Ответить с цитированием
  #6 (permalink)  
Старый 12.06.2021, 11:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от HotReboot
все input подгружаются после загрузки всей страницы
Нужно вешать обработчик на их родительский элемент, что будет на странице вместе со скриптом.
И в том обработчике выполнять все действия, связанные с инпутами.
Это и называется "делегирование" событий.
Ответить с цитированием
  #7 (permalink)  
Старый 12.06.2021, 11:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

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

<!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>
Ответить с цитированием
  #8 (permalink)  
Старый 12.06.2021, 15:12
Аспирант
Отправить личное сообщение для HotReboot Посмотреть профиль Найти все сообщения от HotReboot
 
Регистрация: 06.11.2017
Сообщений: 42

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

Последний раз редактировалось HotReboot, 12.06.2021 в 15:24.
Ответить с цитированием
  #9 (permalink)  
Старый 12.06.2021, 16:37
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

HotReboot, потому что жизнь - боль.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 12.06.2021, 23:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

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

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

Последний раз редактировалось ksa, 12.06.2021 в 23:18.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05
Как корректно подгрузить резервный файл JS, если с основным проблема? Simba Общие вопросы Javascript 3 28.01.2012 19:20
Добавление кода js в js файл BEUJ Общие вопросы Javascript 13 12.01.2012 21:35
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23