Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывод текста по времени (https://javascript.ru/forum/dom-window/8766-vyvod-teksta-po-vremeni.html)

Madjahet 11.04.2010 22:50

Вывод текста по времени
 
Есть массив, содержащий строковые данные.
Как сделать так, чтоб в определенное время начался вывод этого массива, с определенным промежутком между выводом отдельных его элементов?

B~Vladi 11.04.2010 22:55

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.

Madjahet 11.04.2010 23:01

Ну я просто больше с PHP знаком. А это понадобилась вот такая штука на стороне клиента. Я начинал читать несколько учебников по javascript, но он до меня что-то не доходит. Вот я и подумал что может кто-то поможет готовым скриптиком.

B~Vladi 11.04.2010 23:03

Вы просите готовый скрипт с нуля.

Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.

subzey 12.04.2010 00:02

B~Vladi,
Вы что-то уж слишком жестоки.

Madjahet,
Вам пригодятся эти маны: Array, setTimeout, setInterval. И помните, что такой вещи, как sleep() в javascript нет.

Madjahet 12.04.2010 00:12

Моих знаний хватило на это:
<script type="text/javascript">
var znach = new Array(5);
znach[0] = "Значение1";
znach[1] = "Значение2";
znach[2] = "Значение3";
znach[3] = "Значение4";
znach[4] = "Значение5";
//Промежуток, через который должны выводиться сообщения
//В данном случае 20 секунд
var pr = 20000;
//Создаем дату, когда должно начаться показ массивов
var start = new Date("04/11/2010 23:10");
//Если наступит дата старта
//то должно вывестись
//сообщение из масива
function pokaz (dataStarta, soobschenie){
	//Узнаем текущую дату
	var sejchas = new Date();
	//сравниваем ее с датой старта
	//если дата старта больше - выводим сообщение
	if (sejchas < dataStarta){
		document.write(soobschenie);
	}
}
//Выводим сообщения в цикле
for (var i = 0; i<5; i++){
	start = start + pr * i;
	pokaz (start, znach[i]);
}
</script>
Не работает. Что там не так?

Gvozd 12.04.2010 00:21

document.write можно использовать только до загрузки страницы
после этого события надо использовать нижеприведенные инструменты
http://javascript.ru/tutorial/dom
http://innerhtml.ru/

subzey 12.04.2010 00:28

Скрипт выполняется единожды. Чтобы сделать «отсроченное» выполнение, нужно использовать setInterval и setTimeout.

document.write() пишет даные в «поток» документа. При этом этот самый «поток» задерживается до окончания выполнения скрипта, но не функций, вызванных по событию или таймеру — тогда просто непонятно, в какой именно место следует «write», и это грозит открытием нового документа.

Но, в целом, Вы на верном пути.

subzey 12.04.2010 00:39

Madjahet,
Да, и добавлю.
Постарайтесь сначала сделать часы на яваскрипте, самые простецкие. Потом сделайте так, чтобы секунды на этих часах сменялись одновременно с системным временем. Потом сделайте так, чтобы все это ело процессора как можно меньше. И после этого Ваша задача покажется Вам не такой уж и сложной. :)

Gvozd 12.04.2010 06:57

Цитата:

Сообщение от subzey
Потом сделайте так, чтобы все это ело процессора как можно меньше.

а где тут можно напортачить?
разве что сделать цикл, а внутри него по сравнению времени выполнять функцию?О_о

B~Vladi 12.04.2010 08:34

Цитата:

Сообщение от subzey
Вы что-то уж слишком жестоки.

В каком месте:blink:
Тем более он ничем не воспользовался из предложенного в первом посте.

subzey 12.04.2010 17:56

Gvozd,
это в смысле, проверять секунды 50 раз в секунду — плохая идея.

Madjahet 12.04.2010 23:16

Цитата:

Сообщение от B~Vladi
Тем более он ничем не воспользовался из предложенного в первом посте.

Ну почему же, я воспользовался справочником по javascript. И у меня все-таки получилось то, что мне нужно было. Но теперь возникла другая проблема. Мне нужно чтоб при определенном условии вместо текущей страницы загружалась другая. Я сделал так:
if(условие)
{
location.href="http://нужный адрес";
}

Для проверки создаю эти условия, но нужная страница не загружается, а остается та что и была.

B~Vladi 12.04.2010 23:24

Цитата:

Сообщение от Madjahet
Ну почему же, я воспользовался справочником по javascript. И у меня все-таки получилось то, что мне нужно было.

Воооот:)
Цитата:

Сообщение от Madjahet
но нужная страница не загружается, а остается та что и была.

Всё должно грузицо.

Madjahet 14.04.2010 16:44

Все грузится. Просто я там ошибку допустил, причем вообще по глупому. Ошибка детская: функцию для загрузки страницы я написал, а вот где она вызываться должна - не указал. Большое спасибо что помогли. И спасибо что не скрипт дали, а стимулировали чтоб сам разбирался. Оно так действительно лучше. Да и сложного, как оказалось, ничего нет.

subzey 14.04.2010 17:19

/me растроган. Можно, буду цитировать этот пост остальным новичкам?


Часовой пояс GMT +3, время: 17:20.