Функция задержки
Пробую для эксперимента написать чтоб при нажатии на кнопку происхдила задержка картинки, но при нажатии на кнопку ничего не происходит, не знаю почему, как исправить?
Код:
<html> |
Исправил. Вот так тоже не работает.
Код:
<html> Так не выходит. |
Т.е. при нажатии она должна появиться сначала, повисеть 2 секунды и исчезнуть?
|
Да, всё верно.
|
<html> <head><title>Привет</title> <script type='text/javascript'> var a,b,timeout,zadershka; function f(){ var b = document.getElementById('maksImg'); b.style.display = 'block'; setTimeout( function() { b.style.display='none';}, 2000); }; </script> </head> <body> Жил-был пёс. Он был самый лучший пёс за всю мою жизнь.<br> Такого пса я не видел никогда в жизни в этом мире. Вот что<br> значит настоящая псина.Такой псины я <br> не видал за все свои 20 лет жизни. Это была одна из лучших <br> псин,среди тех когда мне приходилось видеть собак. <br> <input type='button' value='кнопка' id='maks' onClick='f()'> <div id="maksImg" style="display:none; position:absolute; left:300px; top:0px;"><img src='http://javascript.ru/forum/images/ca_serenity/misc/logo.gif' ></div> <br><br> </body> </html> |
Странно, но при нажатии на кнопку ничего не выводится.
|
Golovastik,
Действительно странно, у меня код товарища PeaceCoder вполне работает. Причем именно так, как заказано. |
Да, эт онаверное был глюк браузера, сейчас работает.
Скажите ,а как сделать чтоб после нажатия на кнопку, картинка выехала вниз например на 200 пикселей вниз, постояла, 2 секунды и заехала обратно в верх в о пикселей, я хочу попробовать сделать, вы скажите, как примерно это сделать,я не знаю как, хочу чисто на Яваскрипте попробовать понять как это делается. |
Цитата:
function f(){ var b = document.getElementById('maksImg'); b.style.display = 'block'; b.style.top = '200px'; setTimeout( function() { b.style.display='none'; b.style.top = '0'; }, 2000); }; |
ksa,
ИМХО, это не выехала, а прыгнула. |
Я хочу чтоб выезжала как картинка, это масив нужно создавать а оптом циклом проходится ил как? Я вообще думаю может нужно, как-то вот так b.style.top = '200px'; получать доступ в цикле и менять позицию может так надо?
Но как изменять пиксели за каждой итерацией? |
Какой-то бред немного выходит, не работает, выдаёт ошибку что в строке 26, символ 1 ожидается объект.
Код:
<html> |
Вот так вроде сработало.
<html> <head><title>Привет</title> <script type='text/javascript'> var a,pause; var id, i, dir; function g(){ var a = document.getElementById('maksImg'); a.style.top = (i<50)?i:'50'+'px'; if (dir==1) i++; else i--; if (i >= 70) dir=-1; if (i < -90) { clearInterval(id); a.style.display = 'none'; }} function f(){ var a = document.getElementById('maksImg'); a.style.display = 'block'; i=-90;dir=1; id = setInterval("g()",50); } </script> </head> <body> Жил-был пёс. Он был самый лучший пёс за всю мою жизнь.<br> Такого пса я не видел никогда в жизни в этом мире. Вот что<br> значит настоящая псина.Такой псины я <br> не видал за все свои 20 лет жизни. Это была одна из лучших <br> псин,среди тех когда мне приходилось видеть собак. <br> <input type='button' value='кнопка' onClick='f()'> <div id="maksImg" style="display:none; position:absolute; left:100px; top:-90px;"><img src='2.gif' ></div> <br><br> </body> </html> |
осталось паузу добавить )))
var a, pause = 3000, id, i, dir; function g() { var b = document.getElementById("maksImg"); b.style.top = i < 50 ? i : "50px"; if (dir == 1) i++; else i--; if (i >= 50) { dir = -1; *!* clearInterval(id); window.setTimeout('id = setInterval("g()",50)', pause) */!* } if (i < -90) { clearInterval(id); b.style.display = "none" } } function f() { if(id)clearInterval(id); document.getElementById("maksImg").style.display = "block"; i = -90; dir = 1; id = setInterval("g()", 50) }; |
inGray, таки добавить цикл + задержку в нем... Начнёт "выезжать". :)
|
ksa,
;) Именно. |
Скажите пожалуйста ,а как сделать такие кнопки на Яваксрипт синие, чтоб такое происходило при наведении мышкой как на этом сайте
http://213.248.58.131/ |
Цитата:
<a class="linkin2" id="menu2" onmousemove="style.cssText='background-image:url(val/anibtn.gif)';" onmouseout="style.cssText='background-image:url(val/btn.gif)';" style="background-image:url(val/anibtn.gif)"> |
Так там когда навёл на синюю кнопку она несколько раз уменьшается, а не просто изменилось на другую картинку 1 раз и всё. Сколько там картинок использовалось?
|
Цитата:
Вот это: <a class="linkin2" id="menu2" onmousemove="style.cssText='background-image:url(val/anibtn.gif)';" onmouseout="style.cssText='background-image:url(val/btn.gif)';" style="background-image:url(val/anibtn.gif)"> код, выдернутый с того сайта. Анимация там делается одной вот этой гифкой. |
Есть вопрос по поводу предыдущего кода:
<html> <head><title>Привет</title> <script type='text/javascript'> var a, pause = 1500, id, i, dir; function g() { var b = document.getElementById("maksImg"); b.style.top = i < 50 ? i : "50"+"px"; if (dir == 1) i++; else i--; if (i >= 50) { dir = -1; clearInterval(id); window.setTimeout('id = setInterval("g()",5)', pause); } if (i < -90) { clearInterval(id); b.style.display = "none" } } function f() { // if(id)clearInterval(id); document.getElementById("maksImg").style.display = "block"; i = -90; dir = 1; id = setInterval("g()", 5); } </script> </head> <body> Жил-был пёс. Он был самый лучший пёс за всю мою жизнь.<br> Такого пса я не видел никогда в жизни в этом мире. Вот что<br> значит настоящая псина.Такой псины я <br> не видал за все свои 20 лет жизни. Это была одна из лучших <br> псин,среди тех когда мне приходилось видеть собак. <br> <input type='button' value='кнопка' onClick='f()'> <div id="maksImg" style="display:none; position:absolute; left:100px; top:-90px;"><img src='2.gif' ></div> <br><br> </body> </html> Скажите, почему в браузере ИЕ, медленее, чем в других браузерах, как исправить выезд чтоб был бычтрее ,как и у других браузерах? |
Ещё вопрос почему если даже сетинтервал сделать в 0, вс равно долго выезжать будет, а не резко выехать постоять немножко и заехать резко назад? Как сделать чтоб движение во всех браузерах было одинаковое?
|
Цитата:
Цитата:
Цитата:
На счет того как выравнять- можете даже не парится. каждый браузер работает со своей скоростью. самый тормоз - ИЕ, потом мозила, потом опера, хром, а за сафари незнаю, но он стоит по скорости почти в одном ряду с оперой и хромом. |
Как сделать чтоб быстрый заезд был, остановился на 2 секунды и заезд ушёл,пробую менять на 1 задержку не помогает, что делать?
|
Golovastik,
ограничить/установить общее время выезда а не i++; каждые 5 миллисекунд |
Как это примерно, немножко напишите.
|
Пример: Ой написал )))
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Привет</title> <script type='text/javascript'> function slide(b, h, f, d, i, c) { var e = RegExp("(" + h + ".*?)([-+]?\\d+\\.?\\d*)", "i"); b.timer && window.clearTimeout(b.timer); c = typeof c == "function" ? c : false; var a = b.style.cssText; e.test(a) || (a += "; top: " + d + "px;"); var j = (new Date).getTime(); setTimeout(function () { var g = ((new Date).getTime() - j) / i; a = a.replace(e, "$1" + Math.floor((f - d) * g + d)); b.style.cssText = a; if (g < 1) b.timer = setTimeout(arguments.callee, 35); else { a = a.replace(e, "$1" + f); b.style.cssText = a; c && c() } }, 10) }; function f_top(){ var b = document.getElementById("maksImg"), pause = 1500, time = 3000, old = -90, to = 50 , direction= "top"; slide(b,direction, to, old, time,function(){window.setTimeout(function(){slide(b,direction, old, to, time)}, pause)}) } function f_left(){ var b = document.getElementById("maksImg2"), pause = 1500, time = 3000, old = -336, to = 50 , direction= "left"; slide(b,direction, to, old, time,function(){window.setTimeout(function(){slide(b,direction, old, to, time)}, pause)}) } </script> </head> <body> Жил-был пёс. Он был самый лучший пёс за всю мою жизнь.<br> Такого пса я не видел никогда в жизни в этом мире. Вот что<br> значит настоящая псина.Такой псины я<br> не видал за все свои 20 лет жизни. Это была одна из лучших<br> псин,среди тех когда мне приходилось видеть собак.<br> <form> <input type='button' value='сверху' onclick='f_top()'> <input type='button' value='слева' onclick='f_left()'> </form> <div id="maksImg" style="display:block; position:absolute; left:100px; top:-90px;"> <img src='http://javascript.ru/forum/images/ca_serenity/misc/logo.gif'> </div> <div id="maksImg2" style="display:block; position:absolute; left:-336px; top:20px;"> <img src='http://javascript.ru/forum/images/ca_serenity/misc/logo.gif'> </div><br> <br> </body> </html> |
Во так вроде,резко выехало, остановилось на 1 сек и заехало, похоже на нормальное движение картинки?
<html> <head><title>Привет</title> <script type='text/javascript'> var time_down = 500; var time_stop = 1000; var time_up = 500; var max_top = 50; var id, i, scale; function move_down() { i += scale; document.getElementById("maksImg").style.top = i + "px"; if (i >= max_top) { clearInterval(id); setTimeout("move_pause();", time_stop); } } function move_pause() { scale = 1; var interval = time_up / (max_top + 90); while (interval < 15) { interval *= 2; scale *= 2; } id = setInterval("move_up();", interval); } function move_up() { i -= scale; document.getElementById("maksImg").style.top = i + "px"; if (i <= -90) { clearInterval(id); document.getElementById("maksImg").style.display = "none"; } } function f() { document.getElementById("maksImg").style.display = "block"; i = -90; scale = 1; var interval = time_down / (max_top + 90); while (interval < 15) { interval *= 2; scale *= 2; } id = setInterval("move_down();", interval); } </script> </head> <body> Жил-был пёс. Он был самый лучший пёс за всю мою жизнь.<br> Такого пса я не видел никогда в жизни в этом мире. Вот что<br> значит настоящая псина.Такой псины я <br> не видал за все свои 20 лет жизни. Это была одна из лучших <br> псин,среди тех когда мне приходилось видеть собак. <br> <input type='button' value='кнопка' onClick='f()'> <div id="maksImg" style="display:none; position:absolute; left:100px; top:-90px;"><img src='2.gif' ></div> <br><br> </body> </html> |
Заметил проблемку в моём коде ,что если 5 раз нажать на кнопку без передышки,получаются глюки какие-то, а потом на 66-ой раз вообще кнопка не будет работать.
Редактировать/удалить сообщение |
А на джейквери попробовал так, не работает,прост нажимается и ничего не происходит.
Цитата:
|
Часовой пояс GMT +3, время: 04:46. |