Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2010, 20:36
Новичок на форуме
Отправить личное сообщение для hankmoody Посмотреть профиль Найти все сообщения от hankmoody
 
Регистрация: 11.11.2010
Сообщений: 3

случайно (из заданого) менять текст и его цвет по событию Mousemove
Идея в том, чтобы были заданные тексты и цвета. они random'но выводятся в div или span и меняются по событию mouseMove на body. По мере амплитуды/скорости или резкости движений мышью меняется этот текст. т.е. чем быстрее провожу мышью в <body></body>, тем быстрее в случайном порядке меняется текст и его цвет.

Перерыл интернеты - ничего даже похожего не нашел.
Интересно увидеть любую информацию по теме. Т.к. сам только начинаю изучение javascript.

для случаный фраз использую код:
var ar = new Array();
ar[0] = "1";
ar[1] = "2";
ar[2] = "3";
ar[3] = "а";
ar[4] = "б";
ar[5] = "в";
ar[6] = "г";
ar[7] = "д";
ar[8] = "a";
ar[9] = "b";
ar[10] = "c";
document.write(ar[Math.round(Math.random()*10)]);
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2010, 22:13
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Примерно так:
<div id="div"></div>

<script type="text/javascript">
window.onload = function(){
    var array = ['a', 'b', 'c', 'd', 'e', 6, 7, 8, 9, 10];
    document.onmousemove = function(){
         return function(){
               document.getElementById('div').innerHTML = array[Math.floor(Math.random() * array.length)];
         };
    }();
};
</script>

Последний раз редактировалось monolithed, 11.11.2010 в 23:31.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2010, 22:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

monolithed,
маленький на всякий случай )))
Сообщение от monolithed
Math.round(Math.random()*10)
выдаст от 0 до 10 включительно всего элементов 10 значит array[10]=undefined
Math.floor(Math.random() * array.length)

да и замыкание здесь излишне
<div id="div"></div>
<script type="text/javascript">
window.onload = function () {
    document.onmousemove = function () {
        var a = ["a", "b", "c", "d", "e", 6, 7, 8, 9, 10];
        document.getElementById("div").innerHTML = a[Math.floor(Math.random() * a.length)]
    }
};
</script>

Последний раз редактировалось рони, 11.11.2010 в 23:08.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2010, 23:14
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от рони
выдаст от 0 до 10 включительно всего элементов 10 значит array[10]=undefined
Не доглядел
Сообщение от рони
да и замыкание здесь излишне
Хотел итерацию с задержкой сделать, потом передумал и забыл об этом))
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2010, 23:31
Новичок на форуме
Отправить личное сообщение для hankmoody Посмотреть профиль Найти все сообщения от hankmoody
 
Регистрация: 11.11.2010
Сообщений: 3

Спасибо. а можно ли как-то регулировать скорость изменения текста по мере движения мыши?
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2010, 08:42
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Думаю можно, но это будет через одно место
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2010, 12:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Вариант ... "через одно место" )
<div id="div"></div>
<script type="text/javascript">
i = 200;
f = 1;
window.onload = function () {
    document.onmousemove = function () {
        var a = ["Никто так не торопит других, как лентяи",
         "Лень ничего не создает и созданное уничтожает",
         "Желание сделать слишком много служит для многих предлогом не делать ничего",
         "Лень делает всякое дело трудным",
          "Бездельнику и ленивому и помощь не поможет"];
        i && i--;
        if (f&&i<200) {
            f = 0;
            s = a[Math.floor(Math.random() * a.length)];
            document.getElementById("div").innerHTML = "";
            setTimeout(function () { i++;
                document.getElementById("div").innerHTML += s.charAt(0);
                if (s = s.substr(1)) setTimeout(arguments.callee, i);
                else {
                    f = 1;
                    i = 205
                }
            }, 10)
        }
    }
};
</script>
Ответить с цитированием
  #8 (permalink)  
Старый 12.11.2010, 14:23
Новичок на форуме
Отправить личное сообщение для hankmoody Посмотреть профиль Найти все сообщения от hankmoody
 
Регистрация: 11.11.2010
Сообщений: 3

буду думать как лучше))

спасибо всем!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
lastChild работает в IE, как тут быть? Puaris83 Firefox/Mozilla 4 17.04.2010 23:56
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02
Мигающий текст как поменять цвет? Cerver Общие вопросы Javascript 2 08.05.2009 03:37