Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Динамическое обновление страницы. (https://javascript.ru/forum/dom-window/67183-dinamicheskoe-obnovlenie-stranicy.html)

рони 03.02.2017 20:59

Saratov64,
нужна глобальная видимость для timer

Saratov64 04.02.2017 10:19

Цитата:

Сообщение от рони (Сообщение 442981)
Saratov64,
$("ДРУГУЮ ЛЮБУЮ КНОПКУ").on("click",  function() {
clearInterval(timer)
             })

Цитата:

Сообщение от рони (Сообщение 443119)
Saratov64,
нужна глобальная видимость для timer

Вынес ее за функцию, не хочет убиваться. что-то не так в моем понимании
вообщем я сформулировал свое меню. Как оно должно работать.
И так, у меня есть три - или n.... ссылок для примера три.
Я хочу нажать первую, идет опрос датчика раз в 6 секунд, (устанавливаю глобальную переменную в значение = 1), как только я нажимаю вторую ссылку, то меняется значение первой, и запускается clearInterval(timer); и запускается опрос второй ссылки, ну и так далее. Это по моей теории, конечно, опять же если я правильно для себя ставлю задачу, но реализация пока не получилась, поправьте мой код, пожалуйста ...
<!DOCTYPE html>

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


<script>
var	i=0; // устанавливаем первое значение ГЛОБВЛЬНОЙ переменной
	alert (i); //вывод текущего значения переменной
	timer;
	
	function allstation(){
		var i = 1;
		alert ("allstation");
		if (i==1){
		timer = setInterval(allstation, 6000);
		} else {
			clearInterval(timer);
		}
	}
		
		function st1(){
			var i = 2;
			alert ("st1");
			
			if (i==2){
				timer = setInterval(st1, 6000);
			}else{
			clearInterval(timer);
				}
			}
		
		
	function st2(){
			var i = 3;
			alert ("st2");
			
			if (i==3){
				timer = setInterval(st2, 6000);
			}else{
			clearInterval(timer);
				}
			}

  </script>

</head>

<body>
<a href="#" onclick="allstation();">allstation</a>
<br>
<a href="#" onclick="st1();">st1</a>
<br>
<a href="#" onclick="st2();">st2</a>

</body>
</html>

рони 04.02.2017 10:46

Saratov64,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 04.02.2017 10:50

Цитата:

Сообщение от Saratov64
реализация пока не получилась, поправьте мой код

код бред, описание не понял, жду телепата

Saratov64 04.02.2017 10:52

Цитата:

Сообщение от рони (Сообщение 443205)
Saratov64,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Извините, исправил! (поторопился)

рони 04.02.2017 11:00

Saratov64,
попробуйте описать алгоритм того что хотите сделать

Saratov64 04.02.2017 11:19

Цитата:

Сообщение от рони (Сообщение 443208)
Saratov64,
попробуйте описать алгоритм того что хотите сделать

Тех задание получается надо. Попробую.

есть БД. В нее пишутся данные с датчиков. Нужно для мониторинга по каждому датчику смотреть ТЕКУЩИЕ -МГНОВЕННЫЕ ДАННЫЕ которые должны отображаться на мониторе так же онлайн.

Человек нажимает на 1 ссылку, и смотрит показания параметров 1го датчика, и они у него отображаются раз в 6 секунд.
к каждой ссылке привязан PHP запрос
SELECT * FROM dbo.test


1 ссылка - 1й датчик
2 ссылка -2й датчик
3 ссылка ......
...
..
7 ссылка - 7й датчик


Потом допустим ему нужно показания второго датчика мониторить, он нажимает на вторую ссылку, и прирывается выполнение опроса первой ссылки.

А как это реализовать, я придумал, только через условие if

рони 04.02.2017 11:28

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.querySelectorAll(".btn");
    btn[0].addEventListener("click", function() {
        clearInterval(timer);
        timer = setInterval(station1, timeInterval)
    });
    btn[1].addEventListener("click", function() {
        clearInterval(timer);
        timer = setInterval(station2, timeInterval)
    });
    function station1() {
        document.querySelector("#main").innerHTML += "1111 "
    }
    function station2() {
        document.querySelector("#main").innerHTML += "2222 "
    }


    var timeInterval = 1E3;
    var timer = setInterval(station1, timeInterval)
});
  </script>

  </script>
</head>

<body>
<div id="main"></div>
<input class="btn" name="" type="button" value="fn1">
<input class="btn" name="" type="button" value="fn2">
</body>
</html>

Saratov64 04.02.2017 11:37

<script>
window.addEventListener("DOMContentLoaded", function() {
    var btn = document.querySelectorAll(".btn");
    btn[0].addEventListener("click", function() {
        clearInterval(timer);
        timer = setInterval(station1, timeInterval)
    });
    
  </script>


Я тока с сентября начал изучать, и Вы, мне приводили уже в пример, конструкцию данную, она НЕ заработала в IE, мне бы сделать, для IE самое главное. Я почитал, и как понял что window.addEventListener("DOMContentLoaded", function() в IE может не работать.

На этом сайте, нашел
Событие DOMContentLoaded не поддерживается в IE8-, но почти все фреймворки умеют его эмулировать. Если нужна отдельная функция только для кросс-браузерного аналога DOMContentLoaded – можно использовать jquery.documentReady.js.

рони 04.02.2017 11:50

Цитата:

Сообщение от Saratov64
заработала в IE

неужели у вас ie ниже 8 версии? может дело в jquery?


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