@iddimon3

Как обновить div без перезагрузки страницы?

Нужно обновлять один блок, но не затрагивая остальные, без перезагрузки страницы.
вот пример кода:

<div id="block"><? echo time(); ?></div>

<script>setInterval(
setInterval(function(){

    // Тут обновлять block

}, 30000);
</script>
  • Вопрос задан
  • 2176 просмотров
Пригласить эксперта
Ответы на вопрос 5
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
block.innerHTML = Date.now();
Ответ написан
ddv88
@ddv88
Binance Futures
Чего? Кого? Что загружать? Где исполнять? JS? PHP? Ничего не понятно.
Если про PHP речь, то можно запросить с бэка скрипт фетчем, получить результат и подставить в контейнер.
И так бесконечное количество раз.
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Простой вариант:
<div id="block"><? echo time(); ?></div>

<script>
	
	(async function() {
		
		var selector = '#block'; // Селектор блока, который надо обновлять
		
		while (true) {
			
			await new Promise(function(s) { setTimeout(s, 30*1000); }); // Каждые 30 сек.
			
			try {
				var html = await (await fetch(location.href)).text();
				var newdoc = new DOMParser().parseFromString(html, 'text/html');
				document.querySelector(selector).outerHTML = newdoc.querySelector(selector).outerHTML;
				console.log('Элемент '+selector+' был успешно обновлен');
			} catch(err) {
				console.error('При обновлении элемента '+selector+' произошла ошибка:', err);
			}
			
		}
		
	})();
	
</script>
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Самое простое - сделать рядом скрытый <div>, и в него напихать всё содержимое. В нужный момент скрываем первый <div> и материализуем второй. Ну или перемещаем содержимое из второго в первый.

Либо использовать AJAX для получения содержимого с сервера.
Ответ написан
Комментировать
@pvlbgtrv
<div id="block"><? echo time(); ?></div>

<script>
setInterval(function(){

    var block = document.getElementById('block');
    block.innerHTML = 'тут новый контент';

}, 30000);
</script>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы