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
Потом сделайте так, чтобы все это ело процессора как можно меньше.

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


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