Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Менять каждую секунду цвет фона (https://javascript.ru/forum/misc/43065-menyat-kazhduyu-sekundu-cvet-fona.html)

Apelcun77 20.11.2013 15:32

Менять каждую секунду цвет фона
 
НАписал функцию
function mig() {
var x = Number(document.getElementById("setMig").innerHTML);
var y = 0;
    function red_white() {
	if ( y < x ) {
	var	y=y + 1;
	function red() {
    document.bgColor = red;
	setTimeout(white(), 1000);
    }
	function white() {
    document.bgColor = white;
	setTimeout(red_white(), 1000);
    }
	}
	}
}

И HTML
<input type="text" name="setMig">
<input type="submit" onClick="mig()" value="Подтвердить">

Нужно чтобы ты вводиш значение в текстовое поле (например 10), нажимаеш на кнопу и задний фон меняет 10 раз цвет фона с красного на белый. Не могу найти ошибку в коде, он не работает. Помогите, заранее спасибо!

ksa 20.11.2013 16:09

Цитата:

Сообщение от Apelcun77
Не могу найти ошибку в коде

Она очевидна...

Цитата:

Сообщение от Apelcun77
setTimeout(white(), 1000);

Нужно
setTimeout(white, 1000);


И
Цитата:

Сообщение от Apelcun77
setTimeout(red_white(), 1000);

Нужно
setTimeout(red_white, 1000);

Apelcun77 20.11.2013 17:19

спасибо, но все равное не работает,может дело не в синтаксисе а в логике? что делать

monolithed 20.11.2013 17:58

Цитата:

Сообщение от Apelcun77
Менять каждую секунду цвет фона

90-е вроде прошли?

Цитата:

Сообщение от Apelcun77
может дело не в синтаксисе а в логике?

Вам как-раз таки указали на ошибку в логике

ruslan_mart 20.11.2013 18:45

http://learn.javascript.ru/play/38hZ8b

<!DOCTYPE HTML>
<html>
  <head></head>
  <body>
    <input id="mig" type="text">
    <input onclick="setMig()" type="button" value="SET">

    <script>
      var mig = document.getElementById('mig'),
          body = document.body || document.getElementsByTagName('body')[0],
          migInt;
      
      function setMig() {
        var n = +mig.value, f;
        if(!n) return;
        if(migInt) clearInterval(migInt);
        
        migInt = setInterval(function() {
          body.bgColor = (f ^= 1) ? '#FF0000' : '#FFF';
          if(!--n) {
            clearInterval(migInt);
            migInt = null;
          }
        }, 1000);
      }
    </script>

  </body>
</html>

Vlasenko Fedor 21.11.2013 17:13

Еще вариант
<!DOCTYPE HTML>
<html>
  <head></head>
  <body>
    <input id="mig" type="text" value="10">
    <input onclick="setMig()" type="button" value="SET">
    <script>
      var setMig = function () {
          var quantity = +document.getElementById('mig').value,
            body = document.body || document.getElementsByTagName('body')[0];
          quantity && blink(body, quantity, 'red');
        },
        blink = function (element, quantity, color) {
          var i = 0,
            quantity = quantity * 2,
            animTimer = setInterval(function () {
              element.bgColor = element.bgColor ? '' : color;
              ++i == quantity && clearTimeout(animTimer);
            }, 500);
        };
    </script>
  </body>
</html>


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