Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.02.2017, 14:26
Интересующийся
Отправить личное сообщение для Saratov64 Посмотреть профиль Найти все сообщения от Saratov64
 
Регистрация: 17.03.2016
Сообщений: 22

Динамическое обновление страницы.
Добрый день.
Я новечек в js.
Сделал статичный веб. Задача диначески обновлять по каждой ссылки мгновенные данные, поступающие с датчиков, и отображать в таблицы. Таблицы выводить на экран.
Создал скрытый DIV. В него вывожу данные.
Кликаю по менюшке, данные выводятся, но безконечно - вечно.
Нашел стандартный скриптик. Его прикрутил.
<script type="text/javascript">

		function allstation() {
			
			$.ajax({
				url: 'allstation.php',
				success: function(data) {
					 
					$('#display').html(data);
				}
			});
		}

		var timeInterval = 5000;
		setInterval(allstation, timeInterval); 		
	</script>

На каждую кнопку повесил данный скрипт.
Скрипт стартует сам, если убрать setInterval(allstation, timeInterval); то нормально нажатие, но тогда не обновляется контент постоянно.
Мне надо выход из (простите за делитантизм) из setInterval при нажатии на другую кнопку.
Как я понимаю:
1) нужно использовать clearInterval.
2) показывать скрипту, что он в процессе inProcess, чтобы не было автостарта при setInterval
Помогите пожалуйста, поправить данный скрипт.
Ответить с цитированием
  #2 (permalink)  
Старый 02.02.2017, 15:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Saratov64,

var timer = setInterval(allstation, timeInterval); 
     clearInterval(timer);
Ответить с цитированием
  #3 (permalink)  
Старый 02.02.2017, 15:29
Интересующийся
Отправить личное сообщение для Saratov64 Посмотреть профиль Найти все сообщения от Saratov64
 
Регистрация: 17.03.2016
Сообщений: 22

Сообщение от рони Посмотреть сообщение
Saratov64,

var timer = setInterval(allstation, timeInterval); 
     clearInterval(timer);
сделал тестовый файл time.php
чтобы отследить изменения
<?php echo date("H:i:s"); ?>


<script type="text/javascript">

		function allstation() {
			
			$.ajax({
				url: 'allstation.php',
				success: function(data) {
					 
					$('#display').html(data);
				}
			});
		}

		var timer = setInterval(allstation, timeInterval);
         clearInterval(timer);			
	</script>


молчит (((((
Ответить с цитированием
  #4 (permalink)  
Старый 02.02.2017, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Saratov64,
clearInterval(timer); вам нужно добавить в то место где вы хотите остановить интервал.
в целом это был совет наугад, не понимаю что вам нужно.
Ответить с цитированием
  #5 (permalink)  
Старый 02.02.2017, 15:50
Интересующийся
Отправить личное сообщение для Saratov64 Посмотреть профиль Найти все сообщения от Saratov64
 
Регистрация: 17.03.2016
Сообщений: 22

Сообщение от рони Посмотреть сообщение
Saratov64,

var timer = setInterval(allstation, timeInterval); 
     clearInterval(timer);
упростил, тест алертом сделал
<script type="text/javascript">

		function allstation() {
			
			alert ("ТЕСТ");	
		}
		
		var timer = setInterval(allstation, timeInterval);
     clearInterval(timer)
	</script>


МОЛЧОК Разово выполняет и все.
Ответить с цитированием
  #6 (permalink)  
Старый 02.02.2017, 15:54
Интересующийся
Отправить личное сообщение для Saratov64 Посмотреть профиль Найти все сообщения от Saratov64
 
Регистрация: 17.03.2016
Сообщений: 22

Сообщение от рони Посмотреть сообщение
Saratov64,
clearInterval(timer); вам нужно добавить в то место где вы хотите остановить интервал.
в целом это был совет наугад, не понимаю что вам нужно.
Извиняюсь за формулировку вопроса.
Мне бы хотелось целый код, так как я в js новечек, мне сложно будет, понять где добавить.

цель: при нажатии на кнопку, запускает функция, и выполняет опрос базы данных (мгновенные данные которые заливаются в бд), каждые 10 секунд, и выводить в таблицу.
Нужно, при нажатии на ДРУГУЮ ЛЮБУЮ КНОПКУ, прирывать выполнения функции function allstation().
Если можно на примере с alert. Нажал на кнопку, каждые 10 сек, появляется сообщение, нажал на другую кнопку, данное сообщение прирывалось.
Получается, надо какое-то условие, для прерывания выполнения данной функции. if (click.document), если я правильно понял при любом клике на ДРУГИЕ ССЫЛКИ в документе, прирывать выполнение функции данной кнопки .....
хотя, я может не правильно ставлю себе задачу, по работе функции данной ...

Последний раз редактировалось Saratov64, 02.02.2017 в 16:01.
Ответить с цитированием
  #7 (permalink)  
Старый 02.02.2017, 16:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Saratov64,
$("ДРУГУЮ ЛЮБУЮ КНОПКУ").on("click",  function() {
clearInterval(timer)
             })
Ответить с цитированием
  #8 (permalink)  
Старый 02.02.2017, 16:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Saratov64,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    var btn = document.querySelector("#btn");
    btn.addEventListener("click", function() {
        clearInterval(timer)
    });

    function allstation() {
        document.querySelector("#main").innerHTML += "test "
    }
    var timeInterval = 1E3;
    var timer = setInterval(allstation, timeInterval)
});
  </script>

  </script>
</head>

<body>
<div id="main"></div>
<input id="btn" name="" type="button" value="stop">
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 02.02.2017, 19:07
Интересующийся
Отправить личное сообщение для Saratov64 Посмотреть профиль Найти все сообщения от Saratov64
 
Регистрация: 17.03.2016
Сообщений: 22

Сообщение от рони Посмотреть сообщение
Saratov64,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    var btn = document.querySelector("#btn");
    btn.addEventListener("click", function() {
        clearInterval(timer)
    });

    function allstation() {
        document.querySelector("#main").innerHTML += "test "
    }
    var timeInterval = 1E3;
    var timer = setInterval(allstation, timeInterval)
});
  </script>

  </script>
</head>

<body>
<div id="main"></div>
<input id="btn" name="" type="button" value="stop">
</body>
</html>
Коньяк бы, Вам, передать ....
спасибо большое.
Вообщем, надо с нуля за учебник, каждую мелочь не спросишь.
еще раз спасибо !!!
Ответить с цитированием
  #10 (permalink)  
Старый 03.02.2017, 20:25
Интересующийся
Отправить личное сообщение для Saratov64 Посмотреть профиль Найти все сообщения от Saratov64
 
Регистрация: 17.03.2016
Сообщений: 22

Сообщение от рони Посмотреть сообщение
Saratov64,
$("ДРУГУЮ ЛЮБУЮ КНОПКУ").on("click",  function() {
clearInterval(timer)
             })
Задам, еще раз вопрос по теории. Не могу понять, принцип работы clearInterval.
написал свой код который стартует по кнопке, и остановливается по другой кнопке.
Но проблема и вопрос в том, если перменные снаружи, вне функции, то функция стартует автоматически при загрузке страницы, и ее можно остановить с помощью clearInterval(timer); А вот если переменные
setInterval спрятать внутри функции то, она стартует ПРАВИЛЬНО по клику кнопки, но нифига не работает останов. Как буд-то id не видит, или еще какой-то нюанс который я не понимаю в теории событий javascript. Если можно, поясните пожалуйста, как это работает.

<script type="text/javascript">
		var timer
		var timeInterval = 5000;
		timer = setInterval(allstation, timeInterval);
	
function allstation() {
		
		 $("#display").load('allstation.php');
			
		}
	
	
	$("#stp").click(function(){
	clearInterval(timer);
	alert ("stop");
});


</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX обновление div в разных частях страницы kkolorid AJAX и COMET 9 19.12.2014 11:58
Обновление select без перезагрузки страницы Devsanterr Javascript под браузер 1 01.09.2014 09:16
Countdown и обновление страницы. Hekk0 Общие вопросы Javascript 0 01.07.2014 20:07
load и динамическое обновление страницы IONEX AJAX и COMET 12 08.07.2012 20:57
Обновление страницы AndreyS AJAX и COMET 6 16.05.2011 15:55