|
04.06.2020, 11:01
|
Интересующийся
|
|
Регистрация: 28.05.2020
Сообщений: 12
|
|
help - setTimeout
Как запустить код чтобы он работал не только по нажатию на старт а еще при первой загрузке страницы?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>setInterval</title>
<script src="set.js" defer>
let ml = 0;
document.getElementById('start').onclick = function move(){
let blockOne = document.getElementById('one');
ml = ml + 10;
blockOne.style.marginLeft = ml + 'px';
timer = setTimeout(move, 50);
}
document.getElementById('stop').onclick = function(){
clearTimeout(timer);
}
</script>
<style>
#one{
width: 100px;
height: 100px;
background: blue;
}
</style>
</head>
<body>
<div id="one"></div><br>
<button id="stop">STOP</button>
<button id="start">Start</button>
</body>
</html>
|
|
04.06.2020, 11:10
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
<script src="set.js" defer>is-код</script> - это как понимать? А атрибут defer предназначен только для внешних скриптов.
|
|
04.06.2020, 11:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
AMATORx,
let ml = 0, timer;
function move(){
let blockOne = document.getElementById('one');
ml = ml + 10;
blockOne.style.marginLeft = ml + 'px';
timer = setTimeout(move, 50);
}
document.getElementById('start').onclick = move;
document.getElementById('stop').onclick = function(){
clearTimeout(timer);
}
onload = move;
|
|
04.06.2020, 12:48
|
Интересующийся
|
|
Регистрация: 28.05.2020
Сообщений: 12
|
|
я просто сделал коп в <script> и забыл убрать src
|
|
04.06.2020, 12:50
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от AMATORx
|
я просто сделал коп в <script> и забыл убрать src
|
Если при этом оставлен defer, то от него не будет толку, а в консоли будет ошибка, не будет на момент установки обработчика элемента, document.getElementById('start') вернет null.
|
|
07.08.2020, 09:10
|
|
Аспирант
|
|
Регистрация: 06.03.2017
Сообщений: 93
|
|
Доброго времени суток, подскажите пожалуйста как остановить setTimeout после первого обновления?
var start = setTimeout(function(){
location.href = '/info/company/';
}, 0);
clearTimeout(start);
|
|
07.08.2020, 09:58
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Поясните, что вы хотите сделать?
setTimeout срабатывает только один раз.
После обновления страницы он вообще не будет работать.
В вашем случае, по идее, обновления не должно происходить, т.к. clearTimeout(start), выполнится до location.href = '/info/company/'
|
|
07.08.2020, 10:19
|
|
Аспирант
|
|
Регистрация: 06.03.2017
Сообщений: 93
|
|
В моем случаи обновление происходит постоянно
var start = setTimeout(function(){
location.href = '/info/company/';
}, 1000);
каждую секунду,
я пытался написать clearTimeout(start);, но тогда действительно - обновление вообще не работает, нужно чтоб clearTimeout(start) срабатывал позже через примерно 2 секунды.
|
|
07.08.2020, 10:35
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
setTimeout не может работать постоянно. Он работает только 1 раз.
Постоянно работает setInterval.
После того, как страница обновлена, уже ничего не будет. Это совсем новая страница с новым содержимым, с новыми функциями и переменными. Все старое, и переменные и события, поставленные в очередь пропадут.
|
|
07.08.2020, 10:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Сообщение от voraa
|
setTimeout не может работать постоянно. Он работает только 1 раз.
|
страница закольцована, видимо переход на саму себя. поэтому бесконечное обновление.
|
|
|
|