Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задержка, setTimeout() 
V
    Опции темы
lancelot555
Дата 5.11.2006, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 19.2.2005

Репутация: нет
Всего: нет



есть код:
Код

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>

<body>
<script language="JavaScript"> 
<!-- 
function redir(r) {
parent.frames[1].location = r;
}
function func() {
var
str=document.forms["form1"].text.value;
var 
array = new Array();
array=str.split('\n');
i=0;
t=0;
while(array[i]) {
tmp=array[i];
timerID=setTimeout('redir(tmp)',t);
i++;
t+=5000;
}

}
//--> 
</script>
<form id="form1" name="form1" method="post" action="frame.html">
  <div align="center">
    <p>
      <textarea name="text" rows="5" style="width:500px"></textarea>
      <br />
      <input type="button" name="Button" value="Button"  onclick="func();"/>  
      </p>
    </div>
</form>
</body>
</html>


в поле text вводиться список урлов, потом по этому списку с задержкой должно редиректить нижний фрейм задержка происходить но почему то функции redir передается всегда последний элемент массива.. HELP плз как исправить.. а еще лучше было б сделать так чтобы редиректило когда загрузилась предыдущая страница
--------------------
Hи что так не поpтит цель, как попадание! =)
PM MAIL   Вверх
SelenIT
Дата 5.11.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



lancelot555, это происходит потому, что setTimeout не приостанавливает скрипт, а лишь ставит "будильник", вызывающий некий код в заданное время. В итоге цикл пробегает мгновенно и глобальная переменная timerID на каждом проходе переопределяется.
Чтобы таймауты шли один за другим, надо следующий таймаут вызывать в самой функции, которая вызывается по предыдущему таймауту.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
lancelot555
Дата 5.11.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 19.2.2005

Репутация: нет
Всего: нет



переделал так, все равно не поянтно как сделать.. help плз..  smile  smile  smile 

Код

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>

<body>
<script language="JavaScript"> 
<!-- 
var
array = new Array();
var
i=0;
function redir(r) {
parent.frames[1].location = r;
alert(array[i]);
timerID=setTimeout("redir(array["+i+"])",t);
}
function func() {
str=document.forms["form1"].text.value;
array=str.split('\n');
i=0;
t=0;
while(array[i]) {
tmp=array[i];
timerID=setTimeout('redir(tmp)',t);
i++;
t+=5000;
}

}
//--> 
</script>
<form id="form1" name="form1" method="post" action="frame.html">
  <div align="center">
    <p>
      <textarea name="text" rows="5" style="width:500px"></textarea>
      <br />
      <input type="button" name="Button" value="Button"  onclick="func();"/>  
      </p>
    </div>
</form>
</body>
</html>

--------------------
Hи что так не поpтит цель, как попадание! =)
PM MAIL   Вверх
AKS
Дата 5.11.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



lancelot555, Вам ведь нужно загружать по факту загрузки? Может что-то, типа:
Код

var array = [], i = 0;
function func() {
var str = document.forms["form1"].text.value;
array = str.split('\n');
redir();
}
function redir() {
  if(array.length > 0 && i < array.length)
    parent.frames[1].location = a[i++];
}

Запуск - прежним способом, но помимо этого на событии onload нужного фрейма висит redir()...
PM MAIL   Вверх
lancelot555
Дата 5.11.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 19.2.2005

Репутация: нет
Всего: нет



в том то и дело что onload некуда воткнуть.. страница то разная все время будет во фрейме..
а в сам фрейм нельзя onload вставлять
--------------------
Hи что так не поpтит цель, как попадание! =)
PM MAIL   Вверх
smartov
Дата 5.11.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Могут быть описки.
Код

<html xmlns="http://www.w3.org/1999/xhtml">    
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />    
<title>Untitled Document</title>    
</head>    
<body>    
<script language="JavaScript">    
<!--    
var urlArray = new Array();    
var currentUrl = 0;
var intervalId;

function redirAndWait(r) {
    if (urlArray[i] == '')
    {
        clearInterval(intervalId);
        return;
    }
        
    parent.frames[1].location = urlArray[currentUrl];
    currentUrl++;
}    

function func() {    

var str = document.forms["form1"].text.value;    
urlArray = str.split('\n');    

intervalId = setInterval('redirAndWait', 5000);

}    
//-->    
</script>    
<form id="form1" name="form1" method="post" action="frame.html">    
  <div align="center">    
    <p>    
      <textarea name="text" rows="5" style="width:500px"></textarea>    
      <br />    
      <input type="button" name="Button" value="Button"  onclick="func();"/>    
      </p>    
    </div>    
</form>    
</body>    
</html>

PM MAIL   Вверх
lancelot555
Дата 6.11.2006, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 19.2.2005

Репутация: нет
Всего: нет



smartov, Спасибо большое! после небольших исправлений все заработало!

Код

<script language="JavaScript">    
<!--    
var urlArray = new Array();    
var currentUrl = 0;
var intervalId;

function redirAndWait() {
    if (!urlArray[currentUrl])
    {
        clearInterval(intervalId);
        return;
    }
    parent.frames[1].location = urlArray[currentUrl];
    currentUrl++;
}    

function func() {    

var str = document.forms["form1"].text.value;    
urlArray = str.split('\n');    

intervalId = setInterval('redirAndWait()', 5000);

}    
//-->    
</script>   

--------------------
Hи что так не поpтит цель, как попадание! =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.