Показать сообщение отдельно
  #1 (permalink)  
Старый 13.02.2016, 19:08
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

setTimeout и область видимости
Здравствуйте. Подскажите, пожалуйста ответы на следующие вопросы.
Первый: Почему в данном примере, если использовать переменную degrees не как глобальную, а как локальную в контексте функции, то код работать не будет?
Второй: Какой из вариантов, с точки зрения оформления и синтаксиса корректнее (setTimeout)
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title></title>
	<style>
		#image {
			width: 200px;
			height: 200px;
			background: #359FBC;
			margin: 80px auto;
		}
		h2 {
			width: 200px;
		}
	</style>
</head>
<body>
	<div id="image"></div>
	<h2 id="status"></h2>

<script src="main.js"></script>
</body>
</html>


var looper;
var degrees = 0;

function rotateAnimation(el, speed) {
    // var degrees = 0;
    
    var elem = document.getElementById(el);

    elem.style.WebkitTransform = "rotate("+degrees+"deg)";
  
    // setTimeout('rotateAnimation(\''+el+'\','+speed+')',speed);

    setTimeout(function() {
        rotateAnimation(el, speed);
    }, 30);

    degrees++;

    if (degrees > 359) {
        degrees = 1;
    }

    document.getElementById("status").innerHTML = "rotate("+degrees+"deg)";
}

rotateAnimation("image", 30);
Ответить с цитированием