|
|
|

20.07.2011, 20:19
|
|
Аспирант
|
|
Регистрация: 25.05.2011
Сообщений: 46
|
|
|
Код внутри массива.
Вот код из книги фленагана.
<! Это анимируемый элемент div >
<div id="urgent"><h1>Внимание!</h1>Веб сервер атакован!</div>
<script>
var e = document.getElementById("urgent");
// Получаем объект Element
e.style.border = "solid black 5px";
// Рамка
e.style.padding = "50px";
// И отступ
var colors = ["white", "yellow", "orange", "red"] // Перебираемые цвета
var nextColor = 0;
// Текущая позиция перебора
// Вызывать следующую функцию с интервалом 500 миллисекунд
// для изменения цвета рамки.
setInterval(function() {
e.style.borderColor=colors[nextColor++%colors.length];
}, 500);
</script>
Все здесь вроде бы просто и понятно кроме одного момента colors[nextColor++%colors.length], объясните попдробнее пожалуйста, что здесь происходит, по идее должна добавляться переменная массива а здесь идет выполнение кода словно в цикле.
|
|
|

20.07.2011, 20:32
|
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
|
Увеличиваем nextColor на один, берем остаток от деления на длину массива. Получившееся число - индекс в массиве. Просто способ такой.
|
|
|

20.07.2011, 21:29
|
|
Аспирант
|
|
Регистрация: 25.05.2011
Сообщений: 46
|
|
|
Это я понимаю. Я просто был удивлен что в массиве "nextColor++%colors.length" , теперь понял что это равносильно доступа к элементу по colors[i] где i= nextColor++%colors.length. Теперь осталось легкое удивление с радостью от того насколько гибок язык.
Последний раз редактировалось Sundro, 20.07.2011 в 21:34.
|
|
|

20.07.2011, 22:17
|
 |
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
|
а я что-то не понял =( Просто если идти последовательно:длина массива-3,nextColor-0,получается:0++(1)далее берем остаток от деления 1/3 О_о и какой тоода получится индекс массива?
|
|
|

20.07.2011, 22:57
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,618
|
|
Ну во-первых 0++ - это ещё 0, а во вторых:
alert(1%3)
__________________
29375, 35
|
|
|

20.07.2011, 23:09
|
 |
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
|
хм...а почему 0++ все равно 0?
А так спасибо,понял.
|
|
|

20.07.2011, 23:42
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,618
|
|
i=0;
alert(i++)
alert(i)
i=0;
alert(++i)
alert(i)
http://javascript.ru/arithmetic
__________________
29375, 35
|
|
|

20.07.2011, 23:56
|
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
|
Сообщение от 9xakep
|
|
хм...а почему 0++ все равно 0?
|
SyntaxError
|
|
|

21.07.2011, 00:00
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,618
|
|
Сообщение от monolithed
|
|
SyntaxError
|
=) ну всем же понятно что имеется ввиду)
__________________
29375, 35
|
|
|

21.07.2011, 09:35
|
 |
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
|
всем =)... Но вот если бы вы так сразу бы написали,было бы еще понятнее)
|
|
|
|