|
26.12.2011, 19:10
|
Профессор
|
|
Регистрация: 06.12.2011
Сообщений: 172
|
|
Рандомное время в setInterval
есть функция:
function test(){
alert('random alert');
}
нужно чтоб функция выполнялась в разное время (от 1 до 10 секунд)
setInterval('test()' //тут рандомное время);
можно создать переменную с Math.random() и вставить переменную вместо времени?
|
|
26.12.2011, 19:24
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
//рандом от min до max
function rand(min, max){
return (max-min)*Math.random()+min
}
// команда return означает то, что функция будет подставлять НА СВОЕ МЕСТО после того как выполнится)))
// в данном случае подставляется то, что посчитает выражение (max-min)*Math.random()+min, а оно подсчитает случайное число между числами min и max включая)
//тест()
function test(){
alert('ня!')
}
//запускаем тест() используя рандом
setInterval('test()' , rand(1000, 10000) );
Последний раз редактировалось Livaanderiamarum, 26.12.2011 в 19:57.
|
|
26.12.2011, 19:25
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
function test(text){
alert('random alert ' + text);
}
(function runInterval() {
interval = Math.random()*1000*9 + 1000;
setTimeout(function(){
test(interval);
runInterval();
}, interval);
})()
Последний раз редактировалось FINoM, 26.12.2011 в 19:33.
|
|
26.12.2011, 19:26
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Если не накосячил, а за мной это сегодня наблюдается , примерно так
(function() {
var x = (Math.random() * 10) + 1 >> 0;
alert("следующий вызов ~ " + x + " сек.");
setTimeout(arguments.callee, x * 1000);
})();
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
26.12.2011, 19:30
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
мой вариант как обычно лучший)))
помогает понять КАК)) и не содержит ненужных понтов и замыканий и.т.п.))
привет всем)
|
|
26.12.2011, 19:48
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от nerv_
|
Если не накосячил, а за мной это сегодня наблюдается , примерно так
(function() {
var x = (Math.random() * 10) + 1 >> 0;
alert("следующий вызов ~ " + x + " сек.");
setTimeout(arguments.callee, x * 1000);
})();
|
оой, ты использовал рекурсию, в замыкании.. это та круто, теперь объясни это парню ))
|
|
26.12.2011, 20:27
|
Профессор
|
|
Регистрация: 06.12.2011
Сообщений: 172
|
|
всем спасибо) выбрал вариант Аватар для Livaanderiamarum'a
|
|
26.12.2011, 20:33
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Livaanderiamarum
|
оой, ты использовал рекурсию, в замыкании.. это та круто, теперь объясни это парню ))
|
1. Это не круто. Круто пишут старожилы форума. Я пока так не умею
2. Где там замыкание?
var x = (Math.random() * 10) + 1 >> 0; //эту строку можно запистаь без скобок, т.е.
var x = Math.random() * 10 + 1 >> 0;
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 26.12.2011 в 20:41.
|
|
26.12.2011, 20:38
|
Профессор
|
|
Регистрация: 14.09.2011
Сообщений: 523
|
|
Сообщение от Livaanderiamarum
|
мой вариант как обычно лучший)))
|
Сообщение от Livaanderiamarum
|
setInterval('test()' , rand(1000, 10000) );
|
eval
|
|
26.12.2011, 20:39
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от nerv_
|
1. Это не круто
2. Где там замыкание?
var x = (Math.random() * 10) + 1 >> 0; //эту строку можно запистаь без скобок, т.е.
var x = Math.random() * 10 + 1 >> 0;
|
я почему-то назвал ссылку на саму себя замыканием) не знаю почему) но все ровно твой пример не оч подходил для данного вопроса)
разве нет)? человеку же не понятно что ты написал) тогда в чем цель твоего обьяснения)? дать готовый вариант? он он не совсем это хотел) я бы предпочел научить его как делать рандом, именно это он и не понимал)
|
|
|
|