Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   help - setTimeout (https://javascript.ru/forum/misc/80430-help-settimeout.html)

AMATORx 04.06.2020 11:01

help - setTimeout
 
Как запустить код чтобы он работал не только по нажатию на старт а еще при первой загрузке страницы? :help:
<!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>

laimas 04.06.2020 11:10

<script src="set.js" defer>is-код</script> - это как понимать? А атрибут defer предназначен только для внешних скриптов.

рони 04.06.2020 11:11

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;

AMATORx 04.06.2020 12:48

я просто сделал коп в <script> и забыл убрать src

laimas 04.06.2020 12:50

Цитата:

Сообщение от AMATORx
я просто сделал коп в <script> и забыл убрать src

Если при этом оставлен defer, то от него не будет толку, а в консоли будет ошибка, не будет на момент установки обработчика элемента, document.getElementById('start') вернет null.

Александр83 07.08.2020 09:10

Доброго времени суток, подскажите пожалуйста как остановить setTimeout после первого обновления?

var start = setTimeout(function(){
location.href = '/info/company/';
}, 0);
clearTimeout(start);

voraa 07.08.2020 09:58

Поясните, что вы хотите сделать?
setTimeout срабатывает только один раз.
После обновления страницы он вообще не будет работать.
В вашем случае, по идее, обновления не должно происходить, т.к. clearTimeout(start), выполнится до location.href = '/info/company/'

Александр83 07.08.2020 10:19

В моем случаи обновление происходит постоянно
var start = setTimeout(function(){
location.href = '/info/company/';
}, 1000);

каждую секунду,

я пытался написать clearTimeout(start);, но тогда действительно - обновление вообще не работает, нужно чтоб clearTimeout(start) срабатывал позже через примерно 2 секунды.

voraa 07.08.2020 10:35

setTimeout не может работать постоянно. Он работает только 1 раз.
Постоянно работает setInterval.
После того, как страница обновлена, уже ничего не будет. Это совсем новая страница с новым содержимым, с новыми функциями и переменными. Все старое, и переменные и события, поставленные в очередь пропадут.

рони 07.08.2020 10:42

Цитата:

Сообщение от voraa
setTimeout не может работать постоянно. Он работает только 1 раз.

страница закольцована, видимо переход на саму себя. поэтому бесконечное обновление.


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