Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как сделать анимацию элемента? (https://javascript.ru/forum/jquery/34933-kak-sdelat-animaciyu-ehlementa.html)

Dimaz 24.01.2013 22:01

Как сделать анимацию элемента?
 
Привет всем. Хочу, чтобы при клике по div-у каждые 200 мс изменялся его цвет. Цвет меняется, но только один раз. Что не так?
$('div').click(function(){
    for(var i=1; i<100; i++){
    setTimeout(function(){
    $('div').css("background-color","RGB("+i+",200,15)");
    },200);
    }
});

рони 24.01.2013 22:15

Dimaz,
Пример ошибочного использования

рони 24.01.2013 22:38

Dimaz,
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
 $('div').click(function(){
    for(var i=1; i<256; i++){
    setTimeout(function(x){
    return function() {$('div').css("background-color","RGB("+x+",200,15)").html(x)
    }}(i),200*i) }
});
});
</script>
</head>
<body>
<div style="width:330px;height:100px;">click</div>
</body>
</html>

Deff 24.01.2013 22:41

Цитата:

Сообщение от Dimaz
но только один раз. Что не так?

Один раз клик возможен или что ?

Dimaz 24.01.2013 22:43

Спасибо большое:)

Dimaz 24.01.2013 22:47

Цитата:

Сообщение от Deff (Сообщение 229268)
Один раз клик возможен или что ?

Да нет. Цвет менялся, но сразу, а не постепенно. Рони подсказал, теперь все работает. Осталось только вникнуть в весь этот код.)

рони 24.01.2013 22:51

Dimaz,
В вашем случае i всегда 99 было и все таймеры на одно и тоже время.срабатывал первый таймер, а все остальные уже ничего не меняли.


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