Javascript.RU

setTimeout

Синтаксис

timeout_id = window.setTimeout(func|code, delay)

Аргументы

func|code
Функция или строка кода для выполнения
delay
Задержка в миллисекундах, т.е 1000 это 1 секунда

Описание, примеры

Этот метод выполняет код(или функцию), указанный в первом аргументе, асинхронно, с задержкой в delay миллисекунд.

В отличие от метода setInterval, setTimeout выполняет код только один раз.

В каком виде указывать первый параметр - в виде строки кода или функции - разницы нет.

Следующие два вызова работают одинаково:

// первый аргумент - строка
setTimeout('alert("прошла секунда")', 1000)
// первый аргумент - функция
function second_passed() {
  alert("прошла секунда")
}
setTimeout(second_passed, 1000)

При указании строки кода - интерпретатор динамически создает анонимную функцию с телом из данной строки. Но более правильным считается объявление функции в явном виде, например так:

setTimeout(function() { alert('0.5 секунды') }, 500)

Вызов со строкой существует для совместимости с прежними версиями javascript.

Контекст выполнения, this

Функция выполняется в другом контексте, отличном от контекста, в котором задается setTimeout.

При этом значение this = window, поэтому о передаче правильного this надо позаботиться отдельно.

Пример: Без передачи this
object = { 
   func: function() { alert(this) }
}

setTimeout( object.func , 1000) // this будет равно window

Можно указать this явно, используя промежуточную функцию.

Пример: Передача this через call
object = { 
   func: function() { alert(this) }
}

// правильный вариант с передачей this
setTimeout( function() { object.func() } , 1000)

Как правило, this передаетcя через замыкание. Для этого используется промежуточная переменная во внешней функции, которой присваивается this:

...
var self = this // промежуточная перменная
function fun() {
   alert(self)
}
setTimeout(fun, 1000)

Отмена выполнения

Вы можете отменить выполнение setTimeout при помощи clearTimeout, используя для этого идентификатор таймаута.

var timeout_id = setTimeout(...)
clearTimeout(timeout_id)
Пример: Рабочий пример
<input type="button" onclick="on()" value="Запустить таймаут"/>
<input type="button" onclick="off()" value="Остановить отсчет"/>
<script>
function go() { alert('Я сработало') }

function on() {
    timeoutId = setTimeout(go, 3000)
}

function off() {
    clearTimeout(timeoutId)
}
</script>

Минимальная задержка

Минимально возможная задержка в разных браузерах варьируется. В среднем на момент написания этого текста (январь 2011) она составляет 12 мс. То есть, разницы между setTimeout(.., 1) и setTimeout(.., 12), как правило, нет.

Производительность

Большое количество таймеров может привести к серьезной нагрузке на процессор.

Это в первую очередь касается приложений, в которых одновременно анимируется большое количество объектов. В этом случае, по возможности, следует использовать один таймер, который выполняет всю анимацию, а не множество независимых.

См. также


Автор: Evgeny (не зарегистрирован), дата: 11 декабря, 2009 - 13:21
#permalink

Единственное место, где нашел корректную передачу контекста в setTimeout!
Существует ли аналогичный способ передачи контекста в анонимно определенную функцию: function(){... /*this - window*/ ...}

Илья, Спасибо!!!
    Евгений.


Автор: Илья Кантор, дата: 26 января, 2010 - 12:48
#permalink

Для передачи контекста используются либо call/apply, либо промежуточная переменная в самой функции, которая заранее ставится в нужное значение.

...
var self = this // промежуточная перменная
function fun() {
   alert(self)
}
setTimeout(fun, 1000)

Автор: mycarisgood (не зарегистрирован), дата: 6 февраля, 2010 - 01:53
#permalink

За clearTimeout() отдельное спасибо!


Автор: Я (не зарегистрирован), дата: 11 февраля, 2010 - 13:27
#permalink

А как передать объект?

setTimeout('myFunc(объект)',1);

???


Автор: Di.X (не зарегистрирован), дата: 18 февраля, 2010 - 06:33
#permalink

Если что-то нужно делать до определенных пор, тогда прописываем все в одной функции и не паримся...Выполнение итераций происходит последовательно с промежутком времени 60 микросекунд. + реализована передача параметра от функции её преемнице...

function set_active(cat)
{
	setTimeout(function(){
        //Делаем что-нибудь... Изменяем какую-либо величину
	if(/* Если величина подходит */)
        setTimeout(function(){set_active(cat);},10);
				      },60);
}

Автор: edd_k, дата: 21 февраля, 2011 - 03:34
#permalink

1. Не микро, а миллисекунд.
2. Этот код будет генерировать 25-30 таймеров в секунду не очищая их, вместо того, чтобы использовать всего-лишь 1 объект setInterval, щелкающий через необходимые вам 60 мс и выполняющий нужные проверки. Или в чем суть то была?


Автор: Cerber (не зарегистрирован), дата: 22 июля, 2010 - 14:29
#permalink

Весьма желательно запоминать все идентификаторы таймаутов, и после их срабатывания вызывать clearTimeout, иначе, после срабатывания большого количества таймаутов (~тысяч, в зав-ти от браузера) браузер начинает жутко тормозить - видать утекают какие-то ресурсы.


Автор: EuroFlock (не зарегистрирован), дата: 31 октября, 2010 - 10:42
#permalink

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

var time=1;
var name="first";

function timer(t,n) {
     alert(n+t);
     time++;
}

setInterval(timer, 1000, time, name); //setTimeout(timer, 1000, time, name);

Автор: Илья Кантор, дата: 5 января, 2011 - 01:20
#permalink

Такой синтаксис будет работать только в Firefox


Автор: Гость (не зарегистрирован), дата: 29 июня, 2011 - 15:25
#permalink

работает даже в IE7-8


Автор: andriy.humenetskyy, дата: 29 сентября, 2011 - 16:26
#permalink

правильнее будет setInterval(function(){timer(time, name)}, 1000);


Автор: KiFF (не зарегистрирован), дата: 3 декабря, 2010 - 16:44
#permalink

Подскажите, почему не работает вот этот код:
var myPost = $('.post').hide();
for (var i = 0; i < myPost.length; i++){
j=i;
setTimeout(function(j){
myPost.eq(j).fadeIn(1000);
},1000);
};


Автор: B@rmaley.e><e, дата: 3 декабря, 2010 - 17:32
#permalink

Какой аргумент Вы ожидаете в callback-функции для setTimeout? Читайте про замыкания, функции и setTimeout.


Автор: Гость (не зарегистрирован), дата: 27 декабря, 2010 - 22:07
#permalink

JS видит, что установлен timeout. Через секунду он запускает функцию заданую в первом аргументе. Но он не передает в функцию никаких параметров, т.к. он даже не знает, что они там должны быть (потому что функция передается в setTimeout как простая переменная, или как ссылка на функцию, если хотите).
Почитай про замыкания. Вот приблизительное решение твоей проблемы:
var getFunctionForTimeout = function(j){
var fn = function(){
alert(j);//или myPost.eq(j).fadeIn(1000);
}
return fn;//создано замыкание. мы возвращаем функцию, которая знает правильное значение j.
}
for (var i = 0; i <= 10; i++) {setTimeout(getFunctionForTimeout(i), 1000)}


Автор: Гость (не зарегистрирован), дата: 23 января, 2011 - 18:51
#permalink

как при повторном вызове функции типа:

function Name(nummess){
	setTimeout(display,200);
}

дождаться выполнения предыдущего вызова display?


Автор: Levik (не зарегистрирован), дата: 8 февраля, 2011 - 12:28
#permalink

Как вариант - использовать глобальную переменную-индикатор выполнения функции.

var displayinuse = 0;

//В начале функции display 
function display() {
if (displayinuse==1)
 setTimeout(display,200);
displayinuse=1;
//.... собственно display
//при выходе из функции сбрасываем
displayinuse=0;
return ...
}

Автор: Nikich, дата: 15 февраля, 2011 - 13:18
#permalink

подскажите как выведенный текст после не заполненного поля убрать через заданное время
вот код
вывода ошибки не заполненного поля
// вывод заполнити поле Телефон пользователя
function testuserPhone () { var input=this; if (input.value!="") return;
var tips=document.createElement("SPAN");
tips.innerHTML="Пожалуйста заполните поле 'Телефон пользователя: '.";
var td=input.parentNode;
td.appendChild(tips);
}
function userPhone ( str ) {
// проверяет не осталось ли поле пустым
if (str == " ") {
onclick="userPhone(this.valid)"
alert ("Введите Телефон пользователя: ")
return false
}
return true
}


Автор: Nikich, дата: 15 февраля, 2011 - 13:20
#permalink

Подскажите как скрыть текст после указанного времени.
Чтоб он пропадал!


Автор: Advaita (не зарегистрирован), дата: 22 февраля, 2011 - 16:51
#permalink

Поставь setTimeout(function() {document.getElementById("TextToDisappear").style("display", "none");}, 3000);
Соответственно, сам текст должен быть обрамлён в DIV с ID="TextToDisappear"


Автор: Александр Акуратнов (не зарегистрирован), дата: 25 февраля, 2011 - 17:38
#permalink

Помогите, пожалуйста, с одной проблемой.
У меня 2 функции для выпадания и убирания слоя с информацией.
При помощи document.getElementById и setTimeout плавно изменяется значение top у слоя. Всё бы хорошо, но почему-то после одного выпада окна, при попытке вызвать его еще раз - ничего не выходит. Работает только после обновления страницы


Автор: Алексей Шевченко (не зарегистрирован), дата: 17 апреля, 2011 - 22:14
#permalink

доброго времени суток! пожалуйста подскажите, почему не работает?

var Tfade=function(){}

Tfade.prototype.fadeIn=function() {
   setTimeout(function () { this.fadeIn(); }, 100);
 }

Автор: Николай1 (не зарегистрирован), дата: 20 апреля, 2011 - 18:18
#permalink

В приведенном коде this.fadeIn(); срабатывает как вызов функции, а не как ссылка на нее.
Пробуй this.fadeIn - без ();


Автор: Dimitrius (не зарегистрирован), дата: 4 мая, 2011 - 01:36
#permalink

Помогите пожалуйста, как сделать чтобы видео начинало проигрываться не сразу, а через 2-3 секунды? на одном сайте заметил, что видео начинает подгружаться только через несколько секунд, в коде обнаружил: setTimeout("showIt()", 2000); // 1000 = 1 sec я еще пока чайник, подскажите как применить эту фишку?


Автор: Oledje (не зарегистрирован), дата: 13 октября, 2011 - 21:27
#permalink

Почему не работает данный код? Выводит только первое значение i через секунду после запуска и все...

var i =0;
function f() {
i++
document.write(i + "")
}
for (d=0; d<10; d++) {
setTimeout(f, 1000)
}


Автор: Гость (не зарегистрирован), дата: 4 января, 2012 - 16:34
#permalink

Потому что "document.write" очищает и начинает запись в пустом документе. Лучше сделать так

var i = 0;
function f() {
if(i<10){
i++;
document.getElementById("text").innerHTML=i + "";
setTimeout(f, 1000)
}
}
f();


Автор: Гость (не зарегистрирован), дата: 4 января, 2012 - 16:36
#permalink

Потому что "document.write" очищает и начинает запись в пустом документе. Лучше сделать так

<div id="text"></div>
<script type="text/javascript">
var i = 0;
function f() {
if(i<10){
i++;
document.getElementById("text").innerHTML=i + "";
setTimeout(f, 1000)
}
}
f();
</script>

Автор: Гость (не зарегистрирован), дата: 31 октября, 2011 - 16:24
#permalink

помогите исправить ошибку
var user = 1;
setTimeout(func1(+user+),1000)
Ну очень надо=(


Автор: Гость (не зарегистрирован), дата: 4 января, 2012 - 16:12
#permalink

var user = 1;
setTimeout("func1("+user+")",1000)


Автор: Neon (не зарегистрирован), дата: 16 декабря, 2011 - 00:12
#permalink

Доброго времени дня, всем!

Я только начинаю учиться языку js. Прошу помощи.
Есть Код вызова popup окна на Mootols:

window.addEvent('domready', function(){
Mediabox.open('#mb_announcement', '', '600 150');
});

Подскажите, пожалуйста, как и куда вставить таймер вызова этого окна.
Чтоб оно загружалось, скажем, через минуту, после загрузки страницы.
И еще хочется только одноразового появления. Как завязать этот код с куками?
Заранее благодарен.


Автор: Николай И. (не зарегистрирован), дата: 13 января, 2012 - 20:50
#permalink

Всем привет!

Спасибо за хороший сайт, очень часто им пользуюсь.

Прочитал статью, но не нашел ответа на свой вопрос.

Работаю с setTimeout() и clearTimeout().

var timeOut;
function invisible(item_id) {
	clearTimeout(timeOut);
	timeOut = setTimeout(function() {
		document.getElementByID(item_id).style.backgroundColor = '#FFFFFF';
	}, 1500);
}

К примеру, у меня есть 2 ячейки в Таблице с Желтым фоновым цветом. При нажатии на ячейку, цвет после 1.5 секунды меняется на Белый.

Однако, если нажать на 2-ю ячейку раньше окончания Задержки, меняется цвет только последней.

clearTimeout() добавлен для сброса Задержки в случае, если в ячейку нажать повторно.

Подскажите, пожалуйста, как поступить в данном случае ?


Автор: Андрей Демидов (не зарегистрирован), дата: 19 июня, 2015 - 16:07
#permalink

Всё тут дело в "clearTimeout"-е. И даже не столько в нём, сколько в глобальной переменной, куда сохраняется идентификатор таймера. Когда вызывается "invisible", значение, сохранённое в "timeOut"-е, используется для очищения таймера. Если, например, мы нажали на нашу ячейку, предыдущий таймер сбросится, и зарегистрируется новый таймер. Если этот новый таймер ещё не сработал, а мы снова нажали на ту же ячейку, значение нашего нового таймера опять же сбросится, чтобы зарегистрировался ещё один(так вы, кажется, хотели предотвратить задержку при повторном нажатии на ту же ячейку). Беда в том, что переменная одна, и когда при нажатии на одну ячейку регистрируется один таймер, нажатие на второй сбросит тот же таймер, что и в первой(потому что функция "invisible", хоть и вызывается для разных ячеек, оперирует одной глобальной переменной для хранения и сброса таймера).

Решение состоит в том, чтобы убрать "clearTimeout", так как по истечении срока функция, отложенная "setTimeout"-ом, всё равно не вызовется ещё раз и вызывать "clearTimeout" для отмены не нужно. В этом случае предыдущая покраска ячейки не отменится: ведь, если мы используем одну глобальную переменную, то, как я уже объяснил, при каждом вызове нашей ф-ции сбрасываться будет таймер, установленный самой ф-цией в ту самую глоб. переменную, и покраска ячейки при таком сбросе будет отменяться, а планироваться будет уже покраска той ячейки, на которую мы щёлкнули до выполнения предыдущего таймера. Если же убрать "clearTimeout", щелчок по ячейке будет планироваться каждый раз заново, что для щелчков по разным ячейкам решает проблему. Если мы хотим сбросить таймер при повторном нажатии на ту же ячейку, лучше проверить, не покрашена ли эта ячейка в нужный цвет. Если покрашена, ничего делать не нужно. Иначе мы регистрируем отложенный вызов функции "setTimeout"-ом без сброса таймера, т.к. ф-ция всё равно выполнится лишь один раз.

То есть, нужно убрать "clearTimeout", а чтобы не регистрировать отложенных вызовов лишний раз, проверить, не сделана ли требуемая работа, вот и всё.


Автор: Гость (не зарегистрирован), дата: 23 января, 2012 - 11:54
#permalink

У меня вопрос и я не знаю, что делать. Мне нужна помошь.
Где взять готовый js.
Задача такая. Нужно, что бы после того, как заходишь на сайт, гдето секунд через 10 срабатывала левая кнопка мыши автоматически. Один раз.
Заранее спасибо...


Автор: Гость (не зарегистрирован), дата: 24 января, 2012 - 06:36
#permalink

У меня вопрос и я не знаю, что делать. Мне нужна помошь.
Где взять готовый js.
Задача такая. Нужно, что бы после того, как заходишь на сайт, гдето секунд через 10 срабатывала левая кнопка мыши автоматически. Один раз.
Заранее спасибо...

Существует метод click(), который, правда, не работает в хроме.
document.getElementById("EL_ID").click(); или (если нужно кликнуть прямо по документу) - document.body.click(); / document.documentElement.click(); (в зависимости от задачи).


Автор: Zulu0, дата: 26 января, 2012 - 15:03
#permalink

Рецепт готового JS:
Берем базовый массив, заворачиваем в него три не пустых объекта, кладем на правую кнопку мыши и ждем 20 минут. В этот момент обязательно произносим RTFM каждые 70 секунд.....


Автор: kruglyakov (не зарегистрирован), дата: 11 февраля, 2012 - 12:36
#permalink

ar j = jQuery.noConflict();

function online(){
j.post('/index.php?module=chat&do=user_online');
j('#online').load('uploads/chat/user.txt');
setTimeout('online()', '30000');
}

Как поправить?


Автор: Altaisoft (не зарегистрирован), дата: 28 февраля, 2012 - 12:57
#permalink

kruglyakov

Если правильно понимаю смысл этого кода, то надо вызов setTimeout('online()', '30000'); вынести за пределы функции online. Она же у Вас никем не вызывается.


Автор: RAF (не зарегистрирован), дата: 24 апреля, 2012 - 19:57
#permalink
<input type="button" onclick="on()" value="Запустить таймаут"/>
<input type="button" onclick="off()" value="Остановить отсчет"/>
<script>
function go() { alert('Я сработало') }
 
function on() {
    timeoutId = setTimeout(go, 3000)
}
 
function off() {
    clearTimeout(timeoutId)
}
</script>

Как сюда еще добавить кнопку чтобы нажал на кнопку и приостановить время потом еще раз нажал на нее и время дальше пошло
Например задали мы 50 сек, прошло 31 и нажали кнопку приостановить потом еще раз на нее нажали и отчет начал доходить остальные 19 секунд..


Автор: sergiocharm, дата: 23 июня, 2012 - 17:04
#permalink

как реализовать вывод модального окна с вопросом (вопрос после кнопки ОК отправляется на почту), если клиент закрывает страницу до 5 секунд?


Автор: Last1971, дата: 8 августа, 2012 - 15:58
#permalink

Как при рекурсивном вызове setTimeout, получить идентификатор последнего вызванного, что бы прибить его, не прибегая к сохранению этого значения в глобальной переменной?
Т.к. в моем случае, setTimeout зашит в функцию, которая может быть одновременно запущена несколько раз и как определит какой из тайм-аутов нужно прервать.

Нашел не очень красивое решение:

function wa2(kuda,st1,obj){
...
obj.a = setTimeout(function(){wa2(kuda,2,obj);},1000);
}


Автор: feimor (не зарегистрирован), дата: 1 октября, 2012 - 22:27
#permalink

Помогите пожалуйста: голова разрывается

Из php приходит переменная со значением 1349136703000(к примеру) далее активируется функция где timestamp = 1349136703000

function timestamp2date(timestamp) {  
var d = new Date(Number(timestamp)-21600000);
document.getElementById('miniTime').innerHTML='<h3>'+ d +'</ h3>';
var t = timestamp + 1000;
setTimeout("timestamp2date("+t+")",1000);
}

Данная функция выводит время и секунды тикают: Tue Oct 02 2012 00:16:05 GMT+0600

Но проблема в другом, КОГДА ПРИХОДИТ НОВАЯ ПЕРЕМЕННАЯ С НОВЫМ ЗНАЧЕНИЕМ НА ЭКРАНЕ МОРГАЮТ СРАЗУ ДВА ВРЕМЕНИ ЧЕРЕЗ КАЖДУЮ СЕКУНДУ, как убить

setTimeout("timestamp2date("+t+")",1000);

зависимый от предыдущей глобальной переменной?


Автор: Гость (не зарегистрирован), дата: 7 ноября, 2012 - 17:08
#permalink

Подскажите пожалуйста, как сделать чтобы моя функция срабатывала через каждые 10 сек. 15 раз подряд?
вот моя функция:

function zimbo() {

$('input[type="radio"]').each( function(){$(this).attr('checked', true) } )

$('form').submit()

};


Автор: Гость (не зарегистрирован), дата: 8 ноября, 2012 - 20:43
#permalink

function a(){
var par = document.getElementById("green");
if (parseInt(par.style.left <800px)
{
par.style.left=5+parseInt(par.style.left);
setTimeout=("a,50");
}

подскажите пожалуста в чем ошибка????


Автор: Гость (не зарегистрирован), дата: 28 декабря, 2012 - 15:38
#permalink
function a(){
  var par = document.getElementById('green');
  if (parseInt(par.style.left) < 800) {
    par.style.left = 5 + parseInt(par.style.left);
    setTimeout(a, 50);
  }
}

Автор: Одиночка Айс (не зарегистрирован), дата: 12 февраля, 2013 - 15:43
#permalink

Поделюсь маленьким рецептом на решение проблемы сброса стиля после отправки формы с помощью AJAX (может не правильно сказал, но по коду будет понятнее):

function sendData(){
	$.ajax({
		url: "url_обработчика_события",
		type: "POST",
		data: $("#data").serialize(),
		success: function(){
			$("#result #success").show();
			setTimeout('$("#result #success").hide()', 3000);
		},
		error: function(response){
			$("#result #error").show();
			setTimeout('$("#result #error").hide()', 5000);
		}
	});
}

То есть, после отправки формы появляется одна из надписей, стоит какое-то время, потом исчезает. Вот и все. Может кому-то пригодится )))
P.S. Запары с .hide() и .show() нужны для облегчения работы верстальщиков,дабы не ковырять код


Автор: Marakaya, дата: 14 февраля, 2013 - 15:08
#permalink

Вопрос такой, можно ли с помощью этой функции добавить 2 строки кода через 5 секунд?
Мне нужно что бы эти две строки подгрузились в странице через 5 секунд запустив этим слайдер

<script type="text/javascript" src="engine1/wowslider.js"></script>
<script type="text/javascript" src="engine1/script.js"></script>

Автор: elf01 (не зарегистрирован), дата: 22 марта, 2013 - 21:58
#permalink

Здравствуйте, скажите пожалуйста, а как мне сделать чтобы предмет на локации был видим, при клике по нему, он станет скрыт а через 5 секунд скажем с ново появится, и с ново можно использовать тоже самое. вот такой у меня скрипт:
[code]
[%if location.id == 'acb1e8626aad4e248cce4236d5f69005'%] // моя локация

// сама картинка предмета
// действия после клика по предмету. Я так понимаю ниже должна быть строчка про setTimeout().
[%end%]
[/code]

Прошу помощи доделать этот кусок скрипта.


Автор: Гость (не зарегистрирован), дата: 23 августа, 2013 - 20:20
#permalink

А как написать, сколько осталось времени до начала выполнения функции editInput()?

function main()
{
     setTimeout(function() {}, 10000);
	 editInput();
}

Автор: Arhat109 (не зарегистрирован), дата: 22 января, 2014 - 20:03
#permalink

Подскажите, если есть идентификатор установленного тайм-аута, то можно ли как-то у него спросить сколько ещё осталось времени до срабатывания?

Мне нужно: если нажата кнопка, то поставить таймаут в 10сек. с ajax-ом на сервер, но если за это время нажата другая кнопка, то отсрочить этот таймер на 5сек. То есть, юзверь ткунлся в кнопку отправить - пошел отсчет. Он ткнулся в кнопку отменить через 3сек. - надо все равно отправить, но "чуть другое сообщение" через 12сек. (=10-3+5). Само сообщение поменять - не проблема, а вот как переставить тайм аут "на попозже"? Как узнать сколько времени прошло с момента установки тайм аута или сколько времени осталось до срабатывания?

P.S. Считать секунды отдельно, снимать и устанавливать таймер заново - сильно не хочется. Есть метод?


Автор: Simax (не зарегистрирован), дата: 18 ноября, 2014 - 20:34
#permalink

Это наверное глупо сюда писать, но у меня не работает код:

<!DOCTYPE html>
<html>
<head>
	<title>Бегущая линия</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<link rel="Stylesheet"  type="text/css" href="style.css" />
	<script type="text/javascript">
	window.onload=function(){
	var arr=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
	var check=1;
	
	document.getElementById("button").onclick=function(evt){if(check==1) check=0;else check=1;};
		var timerID = setInterval(function(){
		
			for(var i=0;i<20;i++){
				if(arr[i]==1){
					document.getElementById('item'+i).setAttribute('src','b.jpg');if(i==19){document.getElementById('item0').setAttribute('src','w.jpg'); arr=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];}else{document.getElementById('item'+(i+1)).setAttribute('src','w.jpg');arr[i]=0; arr[i+1]=1;}	
				}
			}
		},400);
	}
	</script>
</head>
<body>
	<div id="carcass">
<div id="header">
<p>Линия 1.0:</p>
</div>
<div id="main">
	<img id="item0" src="w.jpg" />
	<img id="item1" src="b.jpg" />
	<img id="item2" src="b.jpg" />
	<img id="item3" src="b.jpg" />
	<img id="item4" src="b.jpg" />
	<img id="item5" src="b.jpg" />
	<img id="item6" src="b.jpg" />
	<img id="item7" src="b.jpg" />
	<img id="item8" src="b.jpg" />
	<img id="item9" src="b.jpg" />
	<img id="item10" src="b.jpg" />
	<img id="item11" src="b.jpg" />
	<img id="item12" src="b.jpg" />
	<img id="item13" src="b.jpg" />
	<img id="item14" src="b.jpg" />
	<img id="item15" src="b.jpg" />
	<img id="item16" src="b.jpg" />
	<img id="item17" src="b.jpg" />
	<img id="item18" src="b.jpg" />
	<img id="item19" src="b.jpg" />
	<p id="button">Остановить</p>
</div>
<div id="footer">
<p>Developing by Simax&copy;</p>
</div>
	</div>
</body>
</html>

Может я плохо прочитал статью ?


Автор: Гость (не зарегистрирован), дата: 22 ноября, 2014 - 21:28
#permalink

подскажите, как скрыть элемент после обновление странице, когда форма отправлятся metodom post, без ajax. Нужно убрать некоторые вещи сверху над формой, после отправки


Автор: ilixom, дата: 10 апреля, 2015 - 17:33
#permalink

всем добрый день хотел узнать а можно допустим есть у меня кнопка которая появляется когда посетитель заходит на сайт и исчезает когда ее нажали но она работает толка тогда когда посетители есть на сайте. вопрос такой надо чтоб да пустим данная кнопка появлялась не тогда когда кто та посетил страницу а имена в указное время не зависима от посетителей можете примерна подсказать как это сделать


Автор: Гость (не зарегистрирован), дата: 13 ноября, 2015 - 04:11
#permalink

Есть код игры. Что нужно поменять в коде, чтобы при совпадении ячеек время запускалось заново 10 сек и они закрывались?
Например открылись на 10 сек и закрылись, отчет времени пошел заново.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=cp1251" />
<title>Игра "Память"</title>
</head> <body>
<center><span style="height:22px;" id="elapsed">&nbsp;</span></center>
<center>
<br>
<br>
            Ширина игрового поля: <input type='text' id='size1' value='4' /><br/><br>
            Время игры: <input type='text' id='time1' value='50' disabled/><br/><br>
            Время показа ячеек: <input type='text' id='time2' value='10' /><br/><br> 
</center>
        
<script>


var sizeHid = 4;
var min1,sec1;
var gameAr = new Array ; // массив значений игровых клеток
var bIsGame = false;
 
            //  нициализация игрового поля - рисуем квадраты с числами
function loadgame() 
{var tSize = document.getElementById('size1').value;  // пробуем размер поля
if ( !(tSize >= 2 && tSize <= 10 && (tSize % 2 == 0) ) ) {
alert("Размер должен быть ЧЕТНЫМ целым числом от 2 до 10");
return;}
sizeHid = tSize;
v = -1; g = 0; tries = 0; total = 0;
document.getElementById("buttonlist").innerHTML = "";
for( var i = 0; i < sizeHid; i++) {  // цикл формирования игрового поля
for(var j = 0; j < sizeHid; j++) {
v++;
document.getElementById("buttonlist").innerHTML += '<input type="button" value="?" style="width:70px; height:60px; font-size: 18pt; font-family:Verdana; font-weight: bold" OnClick="button(' +v+ ')">';}
document.getElementById("buttonlist").innerHTML += "<br>";}
document.mem.start.value = "Старт";
setBoard();}
            
            //  заполняем массив числами
function setBoard() 
{for(var i = 0; i < (sizeHid*sizeHid)/2; i++) 
{gameAr[i] = i+1; 
gameAr[i + (sizeHid*sizeHid)/2] = i+1;}
shuffle();}
            
            // Перемешиваем
function shuffle() 
{for(var i = 0; i < (rand(300)+200); i++)  // 200..500 перемешиваний
{x = 0; y = 0;
while(x == y) 
{x = rand(sizeHid*sizeHid); y = rand(sizeHid*sizeHid);}
temp = gameAr[x]; gameAr[x] = gameAr[y]; gameAr[y] = temp;}
show(0);}
 
function rand(n) 
{return Math.floor(Math.random()*n)  } 
 
function show(n) 
{if((n && confirm("Вы уверены? ")) || !n) {
for(var i = 0; i < sizeHid*sizeHid; i++) {
document.mem.elements[i].value = gameAr[i];
document.mem.elements[i].style.color= "#000";}}
bIsGame = false;}
 
 
function blanks() 
{for(var i = 0; i < sizeHid*sizeHid; i++) 
{document.mem.elements[i].value = " ";}
bIsGame = true;
document.getElementById("elapsed").innerHTML =  document.getElementById("time2").value;
setTimeout("ouTime()", 1000);} // запускаем таймер
function ouTime() 
{var time = document.getElementById("elapsed");
if (!bIsGame) 
{time.value = "";                    
return;}  // если игра закончилась - выходим
time.innerHTML = parseInt(time.innerHTML)-1;    // уменьшаем таймер
if(total == (sizeHid*sizeHid)/2)
{return;
parseInt(parseInt(time.innerHTML)) = 0;}
if (parseInt(parseInt(time.innerHTML)) > 0) 
{setTimeout("ouTime()", 1000);} 
else {time.innerHTML = "";
blank();}}
 
function blank() 
{for(var i = 0; i < sizeHid*sizeHid; i++) 
{document.mem.elements[i].value = " ";}
bIsGame = true;
document.getElementById("elapsed").innerHTML =  document.getElementById("time1").value;
setTimeout("incTime()", 1000);} // запускаем таймер
function incTime() 
{var time = document.getElementById("elapsed");
if (!bIsGame) 
{time.value = "";                    
return;}  // если игра закончилась - выходим
time.innerHTML = parseInt(time.innerHTML)-1;    // уменьшаем таймер
if(total == (sizeHid*sizeHid)/2)
{return;
parseInt(parseInt(time.innerHTML)) = 0;}
if (parseInt(parseInt(time.innerHTML)) > 0) 
{setTimeout("incTime()", 1000);} 
else {alert("Ваше время истекло!");
time.innerHTML = "";
show(0);}}
 
 
function button(x)//выбор 
{if (x < 0) return; 
test = "" + gameAr[x];
if(test.charAt(0) == "[") return;
document.mem.elements[x].value = gameAr[x];
if(g == 0) 
{first = gameAr[x];
firstx = x; 
g++;
return}
if(g == 1) 
{second = gameAr[x];
secondx = x;
tries++;
g = 0;
if(first == second) 
{gameAr[firstx] = "[" +gameAr[firstx]+ "]";
gameAr[secondx] = "[" +gameAr[secondx]+ "]";
total++;
document.mem.start.value = "попаданий: "+total+"";
document.mem.elements[firstx].style.color = "#4db74a"; document.mem.elements[secondx].style.color = "#4db74a";
if(total == (sizeHid*sizeHid)/2)
{sec = document.getElementById("time1").value - document.getElementById("elapsed").innerHTML;
alert("Вы открыли все числа после "+tries+" попыток(попытки)! за "+sec+" секунд");}                        
return}}
setTimeout("document.mem.elements[firstx].value = ' '", 500);
setTimeout("document.mem.elements[secondx].value = ' '", 500);}
</script>
 
<center><form name="mem"><div id="buttonlist"></div>
<center><br>
<input id="startBut" type="button" value="Начали!!!" style="width:100" name="start" OnClick="blanks();" />
<input type="button" value="Хочу снова" OnClick="loadgame();" />
<input type="button" value="Не для меня!" OnClick="show(1);" />
</center></form>
 
<script> loadgame(); </script>
 
</center></body>
</html>

Автор: Гость (не зарегистрирован), дата: 3 декабря, 2015 - 09:00
#permalink

Почему aleart берёста на кавычках, если код будет между кавычках то это ж будет текстовым значениям и код не будет работать


Автор: Гость (не зарегистрирован), дата: 15 января, 2016 - 13:48
#permalink

Подскажите пожалуйста в чём ошибка, - хочу чтобы блоки поочерёдно анимировались с задержкой после загрузки страницы.

$("document").ready(function(){ 
      
      	for (i = 1; i < $('.firstLi').length+1;i++){ 
      		var ixit = $('.firstLi')[i];
      		function draw(){
                ixit.addClass('animated slideInUp');
                }
      		setTimeout(draw,1000*i);
      	};
      });

Автор: Гость (не зарегистрирован), дата: 15 января, 2016 - 13:52
#permalink

Подскажите пожалуйста в чём ошибка , хочу чтобы блоки анимировались с задержкой после загрузки страницы :

$("document").ready(function(){ 
      	for (i = 1; i < $('.firstLi').length+1;i++){ 
      		var ixit = $('.firstLi')[i];
      		function draw(){
      		ixit.addClass('animated slideInUp');
      		}
      		setTimeout(draw,1000*i);
      	};
      });

Автор: Гость (не зарегистрирован), дата: 17 января, 2016 - 14:55
#permalink
<input type=button>

Автор: Гость (не зарегистрирован), дата: 20 января, 2016 - 10:46
#permalink

$(function(){
$('.delivery_list').click(function(){
$(".cities_list").slideToggle('fast');
});

$('ul.cities_list li').click(function(){
var tx = $(this).html();
$(".cities_list").slideUp('fast');
$(".delivery_list span").html(tx);
});
$(document).click(function(e){
if ($(e.target).closest(".cities_list").length);
$('.cities_list').hide();
e.stopPropagation();
});
})

Есть выпадающий список delivery_list . работает но не скрывает при клике в свободную область документа . добавил

$(document).click(function(e){
if ($(e.target).closest(".cities_list").length);
$('.cities_list').hide();
e.stopPropagation();
});

теперь скрывает . но открываться стал только при двойном клике . по блоку . подскажите как поправить чтобы работал на одинарном клике . и скрывал при клике в свободную область документа.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 0 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum