02.02.2017, 14:26
|
Интересующийся
|
|
Регистрация: 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
Помогите пожалуйста, поправить данный скрипт.
|
|
02.02.2017, 15:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Saratov64,
var timer = setInterval(allstation, timeInterval);
clearInterval(timer);
|
|
02.02.2017, 15:29
|
Интересующийся
|
|
Регистрация: 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>
молчит (((((
|
|
02.02.2017, 15:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Saratov64,
clearInterval(timer); вам нужно добавить в то место где вы хотите остановить интервал.
в целом это был совет наугад, не понимаю что вам нужно.
|
|
02.02.2017, 15:50
|
Интересующийся
|
|
Регистрация: 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>
МОЛЧОК Разово выполняет и все.
|
|
02.02.2017, 15:54
|
Интересующийся
|
|
Регистрация: 17.03.2016
Сообщений: 22
|
|
Сообщение от рони
|
Saratov64,
clearInterval(timer); вам нужно добавить в то место где вы хотите остановить интервал.
в целом это был совет наугад, не понимаю что вам нужно.
|
Извиняюсь за формулировку вопроса.
Мне бы хотелось целый код, так как я в js новечек, мне сложно будет, понять где добавить.
цель: при нажатии на кнопку, запускает функция, и выполняет опрос базы данных (мгновенные данные которые заливаются в бд), каждые 10 секунд, и выводить в таблицу.
Нужно, при нажатии на ДРУГУЮ ЛЮБУЮ КНОПКУ, прирывать выполнения функции function allstation().
Если можно на примере с alert. Нажал на кнопку, каждые 10 сек, появляется сообщение, нажал на другую кнопку, данное сообщение прирывалось.
Получается, надо какое-то условие, для прерывания выполнения данной функции. if (click.document), если я правильно понял при любом клике на ДРУГИЕ ССЫЛКИ в документе, прирывать выполнение функции данной кнопки .....
хотя, я может не правильно ставлю себе задачу, по работе функции данной ...
Последний раз редактировалось Saratov64, 02.02.2017 в 16:01.
|
|
02.02.2017, 16:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Saratov64,
$("ДРУГУЮ ЛЮБУЮ КНОПКУ").on("click", function() {
clearInterval(timer)
})
|
|
02.02.2017, 16:07
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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>
|
|
02.02.2017, 19:07
|
Интересующийся
|
|
Регистрация: 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>
|
Коньяк бы, Вам, передать ....
спасибо большое.
Вообщем, надо с нуля за учебник, каждую мелочь не спросишь.
еще раз спасибо !!!
|
|
03.02.2017, 20:25
|
Интересующийся
|
|
Регистрация: 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>
|
|
|
|