Смена цвета фона каждую минуту
Имеется обычный скрипт часов:
<html> <head> <title>Часы</title> </head> <script> function cl() { var t = new Date() document.form1.s1.value = t.toLocaleString() setTimeout('cl()', 1000) } </script> <body OnLoad="cl()"> <center> <form name=form1> <input type=text size=21 name=s1> </form> </center> </body> </html> Нужно, чтобы когда на часах было 00 секунд, т.е. каждую минуту - цвет фона менялся на "рандом"(другой), никак не могу сообразить как это реализовать. |
Покопавшись на сайте нашел функцию, теперь код выглядит так:
<html> <head> <title>Часы</title> </head> <script> function rgb() { var r = Math.floor(Math.random()*256); var g = Math.floor(Math.random()*256); var b = Math.floor(Math.random()*256); var rgb = 'rgb(' + r + ',' + g + ',' + b + ')'; document.body.style.backgroundColor = rgb; } setInterval('rgb()',60000) </script> <script> function cl() { var t=new Date() document.form1.s1.value=t.toLocaleString() setTimeout('cl()',1000) } </script> <body OnLoad="cl()"> <center> <form name=form1> <input type=text size=21 name=s1> </form> </center> </body> </html> Но к моему огромному сожалению функция "setInterval" не привязана к часам, и работает с того момента как запустили документ, соответственно вопрос остается тем же, как поставить смену цвета фона на каждую минуту по часам компьютера? |
Цитата:
<!DOCTYPE html> <html> <head> <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> function cl() { var t = new Date(); if (t.getSeconds()==0) { // меняй фон }; document.form1.s1.value = t.toLocaleString(); setTimeout('cl()', 1000); } </script> </head> <body onload="cl()"> <center> <form name=form1> <input type=text size=21 name=s1 /> </form> </center> </body> </html> |
Я тут сам за помощью пришёл, так что мой вариант не обязательно правильный, но я бы сделал так:
<html> <head> <title>Часы</title> </head> <script> function loaded() { //вызывается при загрузке changeColor(); //удалить, если после загрузки НЕ нужна смена фона var now = new Date().getTime(); //получаем время var remain = 60000 - (now % 60000); //узнаем сколько осталось до 00 setTimeout(function () { //ждём до 00 setInterval(changeColor, 60 * 1000); //запускаем каждые 60сек changeColor(); //запускаем сейчас, т.к. сейчас 00 }, remain); } function changeColor() { //функция смены фона, не менял var r = Math.floor(Math.random() * 256); var g = Math.floor(Math.random() * 256); var b = Math.floor(Math.random() * 256); var rgb = 'rgb(' + r + ',' + g + ',' + b + ')'; document.body.style.backgroundColor = rgb; } </script> <body onload="loaded()"> <center> <form name=form1> <input type=text size=21 name=s1> </form> </center> </body> </html> |
user222,
В точном ожидании 00 смысла сильного нет Во первых - у 60% юзеров время отличается от реального на 10-40 сек И восстанавливается раз в неделю по синхронизации компутерных часов. Единственное обоснование такой нужды, синхронизация с каким-то показывающим время устройством на странице(тогда плясать стоит именно от него |
Deff,
Я просто не понимаю зачем ksa запускает проверку 60 раз в минуту. Только из-за этого предлагаю вариант с запуском 1 раз в минуту. |
user222,
ksa, Просто хотел продемонстрировать что совпадает с часами, поскольку Вы так сказали...*А часы посекундные |
Цитата:
|
Часовой пояс GMT +3, время: 01:41. |