Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.11.2015, 02:52
Новичок на форуме
Отправить личное сообщение для СергейХ Посмотреть профиль Найти все сообщения от СергейХ
 
Регистрация: 16.11.2015
Сообщений: 6

Изменение стилей объектов внутри цикла с "сиюсикундным" отображением
Есть 100 дивов, десять в строку и таких 10 строк, нужно окрасить эти дивы в красный цвет с разной прозрачностью, с 0.01 для первого, 0.02 для второго... 1 для последнего.
Делаем окрашивание внутри цикла.
Как сделать так, чтобы окрашивание происходило непосредственно во время выполнения циклов, но первый окрашивался с задержкой 100 мс, второй 200 мс и т.д.
(У нас сначала выполняется весь цикл, а потом сразу показывается все цветные дивы)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style>
        .d {
            float:left;
            width:70px;
            height:70px;
            box-sizing:border-box;
            display:inline;
        }
        .wrapper{
            width:700px;
            height:700px;
        }
        </style>
    </head>
    <body>
    <div class = "wrapper">
    <div class = "d0_0 d"></div>
    <div class = "d0_1 d"></div>
    <div class = "d0_2 d"></div>
    <div class = "d0_3 d"></div>
    <div class = "d0_4 d"></div>
    <div class = "d0_5 d"></div>
    <div class = "d0_6 d"></div>
    <div class = "d0_7 d"></div>
    <div class = "d0_8 d"></div>
    <div class = "d0_9 d"></div>
    <div class = "d1_0 d"></div>
    <div class = "d1_1 d"></div>
    <div class = "d1_2 d"></div>
    <div class = "d1_3 d"></div>
    <div class = "d1_4 d"></div>
    <div class = "d1_5 d"></div>
    <div class = "d1_6 d"></div>
    <div class = "d1_7 d"></div>
    <div class = "d1_8 d"></div>
    <div class = "d1_9 d"></div>
    <div class = "d2_0 d"></div>
    <div class = "d2_1 d"></div>
    <div class = "d2_2 d"></div>
    <div class = "d2_3 d"></div>
    <div class = "d2_4 d"></div>
    <div class = "d2_5 d"></div>
    <div class = "d2_6 d"></div>
    <div class = "d2_7 d"></div>
    <div class = "d2_8 d"></div>
    <div class = "d2_9 d"></div>
    <div class = "d3_0 d"></div>
    <div class = "d3_1 d"></div>
    <div class = "d3_2 d"></div>
    <div class = "d3_3 d"></div>
    <div class = "d3_4 d"></div>
    <div class = "d3_5 d"></div>
    <div class = "d3_6 d"></div>
    <div class = "d3_7 d"></div>
    <div class = "d3_8 d"></div>
    <div class = "d3_9 d"></div>
    <div class = "d4_0 d"></div>
    <div class = "d4_1 d"></div>
    <div class = "d4_2 d"></div>
    <div class = "d4_3 d"></div>
    <div class = "d4_4 d"></div>
    <div class = "d4_5 d"></div>
    <div class = "d4_6 d"></div>
    <div class = "d4_7 d"></div>
    <div class = "d4_8 d"></div>
    <div class = "d4_9 d"></div>
    <div class = "d5_0 d"></div>
    <div class = "d5_1 d"></div>
    <div class = "d5_2 d"></div>
    <div class = "d5_3 d"></div>
    <div class = "d5_4 d"></div>
    <div class = "d5_5 d"></div>
    <div class = "d5_6 d"></div>
    <div class = "d5_7 d"></div>
    <div class = "d5_8 d"></div>
    <div class = "d5_9 d"></div>
    <div class = "d6_0 d"></div>
    <div class = "d6_1 d"></div>
    <div class = "d6_2 d"></div>
    <div class = "d6_3 d"></div>
    <div class = "d6_4 d"></div>
    <div class = "d6_5 d"></div>
    <div class = "d6_6 d"></div>
    <div class = "d6_7 d"></div>
    <div class = "d6_8 d"></div>
    <div class = "d6_9 d"></div>
    <div class = "d7_0 d"></div>
    <div class = "d7_1 d"></div>
    <div class = "d7_2 d"></div>
    <div class = "d7_3 d"></div>
    <div class = "d7_4 d"></div>
    <div class = "d7_5 d"></div>
    <div class = "d7_6 d"></div>
    <div class = "d7_7 d"></div>
    <div class = "d7_8 d"></div>
    <div class = "d7_9 d"></div>
    <div class = "d8_0 d"></div>
    <div class = "d8_1 d"></div>
    <div class = "d8_2 d"></div>
    <div class = "d8_3 d"></div>
    <div class = "d8_4 d"></div>
    <div class = "d8_5 d"></div>
    <div class = "d8_6 d"></div>
    <div class = "d8_7 d"></div>
    <div class = "d8_8 d"></div>
    <div class = "d8_9 d"></div>
    <div class = "d9_0 d"></div>
    <div class = "d9_1 d"></div>
    <div class = "d9_2 d"></div>
    <div class = "d9_3 d"></div>
    <div class = "d9_4 d"></div>
    <div class = "d9_5 d"></div>
    <div class = "d9_6 d"></div>
    <div class = "d9_7 d"></div>
    <div class = "d9_8 d"></div>
    <div class = "d9_9 d"></div>
    </div>
    <script>

var y = 1;  
    for( var i = 0; i<10; i++) { 
        for( var t = 0; t<10; t++) {
           function nnn () {
             document.querySelector(".d"+i+"_"+t).style.backgroundColor = "rgba(255,0,0," + (i/10 + t/100 + 0.01) + ")"
           };
           setTimeout (nnn(), y*100);
           y += 1;
        }
    };

</script>
    </body>
</html>

Последний раз редактировалось СергейХ, 24.11.2015 в 02:58.
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2015, 03:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

СергейХ,
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style>
        .d {
            float:left;
            width:70px;
            height:70px;
            box-sizing:border-box;
            display:inline;
        }
        .wrapper{
            width:700px;
            height:700px;
        }
        </style>
    </head>
    <body>
    <div class = "wrapper">
    <div class = "d0_0 d"></div>
    <div class = "d0_1 d"></div>
    <div class = "d0_2 d"></div>
    <div class = "d0_3 d"></div>
    <div class = "d0_4 d"></div>
    <div class = "d0_5 d"></div>
    <div class = "d0_6 d"></div>
    <div class = "d0_7 d"></div>
    <div class = "d0_8 d"></div>
    <div class = "d0_9 d"></div>
    <div class = "d1_0 d"></div>
    <div class = "d1_1 d"></div>
    <div class = "d1_2 d"></div>
    <div class = "d1_3 d"></div>
    <div class = "d1_4 d"></div>
    <div class = "d1_5 d"></div>
    <div class = "d1_6 d"></div>
    <div class = "d1_7 d"></div>
    <div class = "d1_8 d"></div>
    <div class = "d1_9 d"></div>
    <div class = "d2_0 d"></div>
    <div class = "d2_1 d"></div>
    <div class = "d2_2 d"></div>
    <div class = "d2_3 d"></div>
    <div class = "d2_4 d"></div>
    <div class = "d2_5 d"></div>
    <div class = "d2_6 d"></div>
    <div class = "d2_7 d"></div>
    <div class = "d2_8 d"></div>
    <div class = "d2_9 d"></div>
    <div class = "d3_0 d"></div>
    <div class = "d3_1 d"></div>
    <div class = "d3_2 d"></div>
    <div class = "d3_3 d"></div>
    <div class = "d3_4 d"></div>
    <div class = "d3_5 d"></div>
    <div class = "d3_6 d"></div>
    <div class = "d3_7 d"></div>
    <div class = "d3_8 d"></div>
    <div class = "d3_9 d"></div>
    <div class = "d4_0 d"></div>
    <div class = "d4_1 d"></div>
    <div class = "d4_2 d"></div>
    <div class = "d4_3 d"></div>
    <div class = "d4_4 d"></div>
    <div class = "d4_5 d"></div>
    <div class = "d4_6 d"></div>
    <div class = "d4_7 d"></div>
    <div class = "d4_8 d"></div>
    <div class = "d4_9 d"></div>
    <div class = "d5_0 d"></div>
    <div class = "d5_1 d"></div>
    <div class = "d5_2 d"></div>
    <div class = "d5_3 d"></div>
    <div class = "d5_4 d"></div>
    <div class = "d5_5 d"></div>
    <div class = "d5_6 d"></div>
    <div class = "d5_7 d"></div>
    <div class = "d5_8 d"></div>
    <div class = "d5_9 d"></div>
    <div class = "d6_0 d"></div>
    <div class = "d6_1 d"></div>
    <div class = "d6_2 d"></div>
    <div class = "d6_3 d"></div>
    <div class = "d6_4 d"></div>
    <div class = "d6_5 d"></div>
    <div class = "d6_6 d"></div>
    <div class = "d6_7 d"></div>
    <div class = "d6_8 d"></div>
    <div class = "d6_9 d"></div>
    <div class = "d7_0 d"></div>
    <div class = "d7_1 d"></div>
    <div class = "d7_2 d"></div>
    <div class = "d7_3 d"></div>
    <div class = "d7_4 d"></div>
    <div class = "d7_5 d"></div>
    <div class = "d7_6 d"></div>
    <div class = "d7_7 d"></div>
    <div class = "d7_8 d"></div>
    <div class = "d7_9 d"></div>
    <div class = "d8_0 d"></div>
    <div class = "d8_1 d"></div>
    <div class = "d8_2 d"></div>
    <div class = "d8_3 d"></div>
    <div class = "d8_4 d"></div>
    <div class = "d8_5 d"></div>
    <div class = "d8_6 d"></div>
    <div class = "d8_7 d"></div>
    <div class = "d8_8 d"></div>
    <div class = "d8_9 d"></div>
    <div class = "d9_0 d"></div>
    <div class = "d9_1 d"></div>
    <div class = "d9_2 d"></div>
    <div class = "d9_3 d"></div>
    <div class = "d9_4 d"></div>
    <div class = "d9_5 d"></div>
    <div class = "d9_6 d"></div>
    <div class = "d9_7 d"></div>
    <div class = "d9_8 d"></div>
    <div class = "d9_9 d"></div>
    </div>
<script>
[].forEach.call(document.querySelectorAll(".d"), function(b, a) {
    setTimeout(function() {
        b.style.backgroundColor = "rgba(255,0,0," + a / 100 + ")"
    }, 100 * a)
});
</script>
</body>


</html>
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2015, 15:32
Новичок на форуме
Отправить личное сообщение для СергейХ Посмотреть профиль Найти все сообщения от СергейХ
 
Регистрация: 16.11.2015
Сообщений: 6

Почему у нас внутри цикла не работало моментальное изменение фона элементов?
Ответить с цитированием
  #4 (permalink)  
Старый 24.11.2015, 16:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

СергейХ,
nnn() исполнить
нужно
setTimeout (nnn, y*100);

но тогда уже nnn к моменту запуска будет нерабочей функцией потому что для всей сотни nnn будет i = 10 и t = 10.
замыкание требуется чтоб сохранить значения i и t
читать букварь
http://javascript.ru/basic/closure#p...-ispolzovaniya
https://learn.javascript.ru/settimeout-setinterval
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переключатель стилей для бесконечного кол-ва объектов zey_ser Общие вопросы Javascript 2 16.07.2015 18:58
Смена стилей объектов? chinga Элементы интерфейса 13 16.05.2012 14:49
Изменение стилей radio при активации checkbox brigz Events/DOM/Window 8 04.02.2012 19:47
изменение значения глобальной переменной внутри функции mgmarket Серверные языки и технологии 14 13.09.2011 00:56
Изменение путей к таблицам стилей и скриптам в скрипете галереи lightbox 2.04 Flashton Элементы интерфейса 1 01.02.2010 10:10