Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/30: Рейтинг темы: голосов - 30, средняя оценка - 4.90
10 / 10 / 3
Регистрация: 18.07.2010
Сообщений: 180

Смена картинки с затуханием

24.05.2012, 01:35. Показов 6197. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.Наткнулся на вилы. есть кнопка, к ней на он клик привязана функция которая меняет картинку. Смена картинки начинается с затухания старой картинки(делается прозрачной) за тем счётчик перескакивает на след позицию и в src добавляется новая картинка. Однако после затухания новая картинка не появляется, а если нажать на кнопку смены ещё раз то она появляется на секунду и пропадает.
вот код
JavaScript
1
2
3
4
5
6
7
8
9
//функция возвращает объекту прозрачность
function srr() {
    
 
        document.getElementById("topscrn").setAttribute('style', '-khtml-opacity:1');
    document.getElementById("topscrn").setAttribute('style', '-moz-opacity:1');
    document.getElementById("topscrn").setAttribute('style', 'filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100)');
    document.getElementById("topscrn").setAttribute('style', 'opacity:1');
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//функция делает объет прозрачным
function anim() {
    var img1 = document.getElementById("topscrn");
    //alert();
    if (max >= 0) {
        max -= 0.1;
        img1.setAttribute('style', '-khtml-opacity:' + max);
        img1.setAttribute('style', '-moz-opacity:' + max);
        img1.setAttribute('style', 'filter:progid:DXImageTransform.Microsoft.Alpha(opacity=' + max * 10 + ')');
        img1.setAttribute('style', 'opacity:' + max);
        var timer = setTimeout("anim();", 100);
 
    }
    else 
    {
        clearTimeout(timer);
        max = 0;
    }
   
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//функция смены картинки
function prev() {
    imgcounter--; //счётчик картинок
    if (imgcounter <0)
        imgcounter = 2;
   
if(imgcounter==0) //номер картинки
{
anim(); //делаем текущую картинку прозрачной
if (max == -0.1) {
   
    srr(); //возвращаем прозрачность в видемое положение
document.getElementById("ts").src = "img/scr/topscrn.png"; //меняем картинку на следующую
max = 1; //выставляем прозрачность на 1 для след смены при клике.
    }
}
if (imgcounter == 1) {
    anim();
    if (max == -0.1) {
 
        document.getElementById("ts").src = "img/scr/1.png";
        srr();
        max = 1;  
    }
}
if (imgcounter == 2)
 {
    anim();
    if (max == -0.1)
     {
         document.getElementById("ts").src = "img/scr/2.png";
        srr();
        max = 1;
       }
   }
}
HTML5
1
2
3
4
5
6
<!--ну и собственно вызов-->
 <div id="topscrn">
        <img src="img/scr/topscrn.png" alt="topscr" id="ts"  />
    </div>
    <span class="but1">Предыдущая</span>
    <img id="mbuttonf" src="img/topcont.png" onclick="prev();" />
Вроде бы выложил всё.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2012, 01:35
Ответы с готовыми решениями:

Смена картинки
Здравствуйте форумчане, буду благодарен за помощь У меня следующий вопрос сайт делаю на ворд прессе. под основным меню есть панорамная...

Смена картинки.
Проясните некоторые моменты в этом коде, я написал в комментариях что не ясно. var n=1; var name = new Array(); function...

Смена картинки
Есть ли html/java код такой: Картинка (например) каждые 10 сек меняется на другую. Потом другая на третью и т.п. &quot;замкнутый...

21
Заблокирован
24.05.2012, 04:44
как-то у вас очень сложно всё оформлено
вот кроссбраузерный код, который меняет картинки одну на другую с затуханием/проявлением
в разных режимах - и непрерывно, и всего один раз:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function mF (x)
{
if (!this.dir)
   {
   this.dir = -1; this.ops = 99; this.count = 100 + x;
   this.obj = document.getElementById ('ts');
   if ('v' == '\v') this.obj.style.filter = 'alpha(opacity=' + this.ops + ')';
   else this.obj.style.opacity = this.ops;
   TMR = setTimeout ('mF ()', 20);
   }
else
   {
   clearTimeout (TMR);
   if (this.ops > 0 && this.ops < 100)
      {
      this.ops += this.dir;
      if ('v' == '\v') this.obj.style.filter = 'alpha(opacity=' + this.ops + ')';
      else this.obj.style.opacity = .01 * this.ops;
      }
   else
      {
      if (!this.ops) {var t = this.obj.lang; this.obj.lang = this.obj.src; this.obj.src = t}
      this.dir *= -1; this.ops += this.dir;
      }
   if (this.count != this.ops) TMR = setTimeout ('mF ()', 20);
   }
}
HTML5
1
2
3
4
5
6
7
8
9
10
<img id="ts"
     src="http://img.yandex.net/i/www/logo.png"
     lang="https://www.google.com/images/srpr/logo3w.png"
     style="width: 178px; height: 120px">
 
<p
><input type="button" value="туда-сюда-обратно"
        onclick="mF (1);  this.disabled = this.nextSibling.disabled     = 1"
><input type="button" value="одноразово"
        onclick="mF (-1); this.disabled = this.previousSibling.disabled = 1">
0
10 / 10 / 3
Регистрация: 18.07.2010
Сообщений: 180
24.05.2012, 08:18  [ТС]
Спасибо вроде бы работает. Однако при смене изменяется ширина картинки и с каждой сменой картинка становится всё уже и уже + я что-то не пойму где поменять сам src чтобы появлялась не текущая картинка а след в списке.
PS/ В IE , Opere и Mozil-е картинка просто затухает и не появляется.
0
Заблокирован
24.05.2012, 11:25
revaldo666, вы сейчас с кем разговариваете?
и о чём таком пишете?

в моём коде, именно в моём - где логотип яндекса меняется на логотип гугля,
разве происходит 'изменение ширины картинки'?
мой код, если запустить его as is ('как есть'), разве 'в IE, Opere и Mozil-е просто затухает'?

вы больны?
0
10 / 10 / 3
Регистрация: 18.07.2010
Сообщений: 180
24.05.2012, 16:16  [ТС]
Цитата Сообщение от Notortep Посмотреть сообщение
revaldo666, вы сейчас с кем разговариваете?
и о чём таком пишете?

в моём коде, именно в моём - где логотип яндекса меняется на логотип гугля,
разве происходит 'изменение ширины картинки'?
мой код, если запустить его as is ('как есть'), разве 'в IE, Opere и Mozil-е просто затухает'?

вы больны?
ну ваш код я использовал как есть, вот только кнопку заменил. И скажу вам что онзатухает и всё (сужается только в хроме).
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
24.05.2012, 17:41
Notortep, логотип гугла отображается с поломанными пропорциями, вытянутым по вертикали.
IE8 отображает смену картинок нормально (т.е. не просто затухает), но с пропорциями и там не всё хорошо.
0
Заблокирован
24.05.2012, 17:48
GuardCat, логотипы гугля и яндекса имеют разные размеры.
ну не стал я для этого примера искать в сети две картинки одинакового размера.
потому и прописал принудительные ширину и высоту.
вот гугль и исказился.
если убрать принудительные размеры - кнопки, которые ниже, 'прыгать' вверх-вниз будут при смене картинок.
[вы б тогда тоже написали, что 'прыгает'?]
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
24.05.2012, 17:50
Notortep, друг, нервы нужно беречь. Я ж не в виде обвинения, просто отметил, что ТС, возможно, это имел ввиду под «сужением».

Скажите, а зачем так
JavaScript
1
setTimeout ("mF ()", 20)
А не так
JavaScript
1
setTimeout (mF, 20)
?
0
Заблокирован
24.05.2012, 18:46
GuardCat, хороший вопрос.
на него у меня есть хороший ответ.
запустите в браузере FireFox, посмотрите:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<html>
<head>
<title>Text Motion</title>
<script>
function Motion ()
{
if (Motion.arguments.length)
   { //alert (Motion.arguments [0]) - в FireFox всякий раз будет показывать некое время, совершенно к коду не относящееся
   if (self.Cln) document.body.removeChild (Cln); Tim = null;
   var s = Motion.arguments [0], obj = document.getElementById (s); Tp = Lt = 0;
   while (obj.offsetParent) {Tp += obj.offsetTop; Lt += obj.offsetLeft; obj = obj.offsetParent}
   Spn = document.getElementById (s); Cln = Spn.cloneNode (1); with (Cln.style)
   {zIndex = 99; position = 'absolute'; left = Lt; top = Tp; fontSize = '100%'}
   Cln = document.body.appendChild (Cln); Spn.style.visibility = 'hidden';
   Ofh = Spn.offsetHeight; Ofw = Spn.offsetWidth; Cur = Sts = 20; Siz = 15; Int = 5;
   }
if (Cur != -1 * Sts)
   {
   Cln.style.fontSize = (100 + Siz * (Sts + --Cur * ((Cur < 0) ? 1 : -1))) + '%';
   with (Cln.style) {top = Tp - (Cln.offsetHeight - Ofh) / 2; left = Lt - (Cln.offsetWidth - Ofw) / 2}
   Tim = setTimeout ('Motion ()', Int);
   }
else Spn.style.visibility = 'visible';
}
</script>
</head>
<body style="margin: 100px 200px">
<span id="boom_me">Text Motion</span><br>
<input style="margin-top: 100px" type="button" onclick="Motion ('boom_me')" value="boom it">
</body>
</html>
а потом сделайте предлагаемую вами замену -
в строке #21 замените Tim = setTimeout ('Motion ()', Int); на Tim = setTimeout (Motion, Int);
и запустите в том же FireFox.

и ощутите разницу.
я раньше тоже писал без круглых скобок и кавычек.
но когда столкнулся с этим эффектом и разобрался - http://javascript.ru/blog/subz... setTimeout - то везде и всегда стал писать со скобками и кавычками.
0
24.05.2012, 19:42

Не по теме:

Цитата Сообщение от Notortep Посмотреть сообщение
но когда столкнулся с этим эффектом и разобрался
По меньшей мере, это странно: полагаться на наличие или отсутствие аргументов в функции, которую вызываете не Вы, а "оно само", когда задокументировано, что аргументов нет. Нужны свои аргументы - используйте еще одну обертку.

0
Заблокирован
24.05.2012, 19:56
Vovan-VE, ничего странного не вижу.
в javascript предусмотрено, что в определении функции аргументы можно не указывать,
но внутри самой функции к ним (аргументам) можно обращаться.
как говорится - грех не воспользоваться этой возможностью, если это даёт преимущества.
а именно: по набору аргументов внутри функции я всегда могу узнать - откуда именно был сделан вызов.
это удобно.

поэтому я и буду писать скобки и кавычки, чтобы не лишаться возможности
использовать одну и ту же функцию в разных ипостасях.
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
24.05.2012, 20:34
То что есть стремление сделать без глобальных переменных, это хорошо, но не таким же варварским способом.
Думаю это не очень хорошая идея каждые 20 милисекунд изменять атрибуты и заставлять браузер пересчитывать страницу.
Да и время обращения в таком случае больше чем к переменной.
И в тоже время не объявленная переменная TMR убивает на корню всю идею с глобальными переменными. Прозевал надо полагать.
Ну а этот кошмар, он и есть кошмар.
JavaScript
1
setTimeout ('mF ()', 20);
Цитата Сообщение от Notortep Посмотреть сообщение
и запустите в том же FireFox.
Ни с чем подобным не сталкивался.
И не стоит забывать, так запускается с помощью eval, что уже плохо.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<title>Смена картинки с затуханием</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<script type="text/javascript">
var startOpacity;
//
(function(){
/*
все переменные для безымянной функции являются локальными для документа и глобальными для всех остальных функций находящихся внутри этой безымянной функции
возможно количество переменных избыточно, но измения вносить нужно только в одном месте и это удобно, да и демо это
без них вполне можно обойтись up, down, leng, step
*/
var obj, ops, cours, ind, up, down, leng, step, massPic=[];
ops=100;//полная картинка
up=ops;//верхний предел
down=0;//нижний предел
step=3;//шаг
cours=-step;//направление
massPic[0]='pics/pic1.jpg';
massPic[1]='pics/pic2.jpg';
massPic[2]='pics/pic3.jpg';
ind=0;//индекс текущей картинки
leng=massPic.length;
//
startOpacity=function(){
obj=document.getElementById("pic");
transp();
 };//
//
function transp(){//изменить прозрачность
ops=ops+cours;
if(ops>down&&ops<up){
if(window.ActiveXObject){obj.style.filter='alpha(opacity='+ops+')';}//ИЕ
else{obj.style.opacity=ops/100;};//остальные
setTimeout(transp, 60);}
else{
cours=cours==step?-step:step;//меняем направление
if(cours==step){//можно ли менять картинку
ind=ind+1==leng?0:ind+1;
obj.src=massPic[ind];
transp();}//сразу запускаем с новой картинкой
else{setTimeout(transp, 3000);}};//"долго" показываем полную картинку
 };//
 
 
 })();//
 
</script>
</head>
 
<body>
 
<img src="pics/pic1.jpg" alt="" id="pic">
<br>
<input type="button" value="кнопка" onclick="startOpacity();">
 
</body>
</html>
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
24.05.2012, 20:47
Notortep, какая-то чёрная магия. Насколько я. знаю, возможность передачи строки считается устаревшей и сохраняется только для совместимости старыми версиями языка.
0
Заблокирован
24.05.2012, 21:20
Цитата Сообщение от newJS Посмотреть сообщение
То что есть стремление сделать без глобальных переменных, это хорошо, но не таким же варварским способом.
да нет, стремление было иное - сделать всё одной функцией, а не тремя, как сделано у топикстартера.
вы не поняли?
извините, это ваши личные проблемы (вернее, 'проблемы вашего личного понимания реальной действительности').
Цитата Сообщение от newJS Посмотреть сообщение
Думаю это не очень хорошая идея каждые 20 милисекунд изменять атрибуты и заставлять браузер пересчитывать страницу.
интересная мысль... свежая...
а что, есть какой-то иной способ изменить визуальные свойства объекта на странице, кроме как через setTimeout () или через setInterval ()?

человеку нужно обеспечить видимое 'затухание' картинки.
вы готовы предложить что-то, отличающееся от setTimeout ()?

или вас смущает именно выбранные мною 20 миллисекунд в качестве периода времени?
а какой период времени, по-вашему, будет 'нормальным' - 25 или 1000 (или 3000) миллисекунд?
укажите, пожалуйста, точное значение, начиная с которого будет 'нормально'.
только потрудитесь ещё и объяснить: 'а почему именно это ваше значение - нормальное?'
Цитата Сообщение от newJS Посмотреть сообщение
Прозевал надо полагать.
вы сегодня с утра уже выпили?
пива или коньяк?
с кем-то?
и на брудершафт?

ну а я-то тут причём?
этому вашему собутыльнику и 'тыкайте'.
мне - не надо.
Цитата Сообщение от newJS Посмотреть сообщение
Ни с чем подобным не сталкивался...
И не стоит забывать, так запускается с помощью eval, что уже плохо.
так вот и я - покуда не столкнулся, тоже везде писал без скобок и без кавычек.
а когда столкнулся - решил, чтобы ещё раз не ломать голову (как в тот раз - код приведён):
писать везде и всегда со скобками и с кавычками.
если у вас голова пуста и в ней имеется место, чтобы запомнить - когда можно, а когда нельзя пользовать скобки и кавычки, то флаг вам в руки.
а я для себя решил делать именно так.
четыре лишних символа - совсем не страшно. люди вон для меньшего целую библиотеку JQuery не стесняются подключать.

что до метода eval ()... наименование функции всегда возвращает именно текст функции и всегда исполняется как метод eval ().
не знали?
как грится: век живи - век учись!
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
24.05.2012, 21:42
Цитата Сообщение от Notortep Посмотреть сообщение
что до метода eval ()... наименование функции всегда возвращает именно текст функции и всегда исполняется как метод eval ().
не знали?
как грится: век живи - век учись!
Есть возможность привести ссылку на источник? Почитал бы подробнее...
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
25.05.2012, 06:19
Цитата Сообщение от GuardCat Посмотреть сообщение
Почитал бы подробнее...
http://alljs.ru/articles/timeout/
если не ошибаюсь, автор обитает на форуме яваскрипт.ру
не знаю есть ли подобное у Сошникова, если есть то это тоже источник внушающий доверее
0
25.05.2012, 08:24

Не по теме:

newJS, по вашей ссылке как раз и не рекомендуют передавать строки setTimeout, чтобы не получать сюрпризов с контекстом. Кстати, я тоже обитаю на форуме-который-нельзя-называть, но в обитании там Notortep сомневаюсь: его стиль кода не соответствует общепринятым рекомендациям, которые, в том числе даёт Илья Кантор. Да и взгляд на логику кода нестандартен, используются странные, непривычные паттерны... Я не говорю что это плохо, но это выдаёт самоучку, который уже логику языка понял, но к стандартам, что является признаком профессионализма, ещё не пришёл. ИМХО, разумеется. Да и сам-то я профессионал вовсе не в javascript.

0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
25.05.2012, 10:16
Цитата Сообщение от GuardCat Посмотреть сообщение
newJS, по вашей ссылке как раз и не рекомендуют передавать строки setTimeout
А я о чем говорю?

Цитата Сообщение от GuardCat Посмотреть сообщение
но в обитании там Notortep сомневаюсь
автор сайта по ссылке Kolyaj, о нем и речь.
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
25.05.2012, 11:44
newJS, оу, Kolyaj — авторитет (без сарказма).

Вот ещё вариант смены картинок с затуханием. Постарался учесть:
  1. Когда картинка долго грузится, в IE затухает и появляется старая картинка, а потом резко появляется новая. Теперь проявление начинается только после полной загрузки нового изображения.
  2. Неизвестно, как нужно будет использовать подобную смену картинок: то ли как фотоальбом, то ли как слайд-шоу. Сделана модульная система, где смена картинок отдельно, а управление её (смены картинок) вызовами — отдельно. Достаточно изменить управляющую функцию, без внесения изменений в модуль смены картинок, чтобы изменить форму подачи. В качестве теста сделал что-то вроде альбома.
  3. Оформление — отдельно. Изображение можно разместить где угодно и как угодно.

Листинг в сборе с разметкой
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
  <head>
    <title>Смена картинок с затуханием</title>
    <style type ="text/css">
      .photoAlbum {
        border: 0px;
        border-collapse: collapse;
      }
      
      .photoAlbum td {padding: 0; margin: 0;}
      .photoAlbum #back{ float: left }
      .photoAlbum #forward{ float: right }
      
      #monitor {
        height: 300px
      }
    </style>
  </head>
  <body>
    <table class = "photoAlbum">
      <tr>
        <td class = "fixedSize"><img src = " " id = "monitor">
      <tr>
        <td><input type ="button" value = "<" id = "back">
        <td><input type ="button" value = ">" id = "forward">
    </table>
    <script>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
      var 
        srcList = [ /* Список адресов изображений для альбома */
          "http://www.inpic.ru/pic/9153-d6eeaf88.jpg",
          "http://www.inpic.ru/pic/9043-de987351.jpg",
          "http://www.inpic.ru/pic/8946-f29acbd3.jpg",
          "http://www.inpic.ru/pic/8844-f42f24b8.jpg",
          "http://www.inpic.ru/pic/8836-e2eeb0bc.jpg"
        ],
        
        img = document.getElementById( "monitor" ),
        
        /** Синглтон Event. Простой кроссбраузерный инструмент для работы с событиями */
        Event = {
          set: window.addEventListener ? 
            function(elem, event, listener) {
              elem.addEventListener(event, listener, false)
              return listener;
            } :
            function(elem, event, listener) {
              var fixedListener = function() {listener.call(elem, window.event)};
              elem.attachEvent("on" + event, fixedListener);
              return fixedListener;
            }
          ,
          remove: window.addEventListener ? 
            function(elem, event, listener) {
              elem.removeEventListener(event, listener, false)
            } :
            function(elem, event, listener) {
              elem.detachEvent("on" + event, listener);
            }
        },
        
        /* 
          Функция для смены src изображения с исчезанием и проявлением.
          Принимает два аргумента: объект img и новое значение src в виде строки.
          Нуждается в наличии синглтона Event, хранящемся в глобальном контексте.
        */
        changeImg = ( function() {
          var setOpacity = ( function() { // Один раз проверяем браузер и устанавливаем соответствующую функцию для смены прозрачности
            return "v" === "\v" ?
              function(img, op) {
                img.style.filter = "alpha(opacity=" + op * 100 + ")"; 
              } :
              function(img, op) {
                img.style.opacity = op;
              }
            ;
          } )();
            
          return function(img, newSrc) {
            var 
              nowOpacity = 1,
              step = -0.05,
              ms = 20,
              needOpacity = 0,
              listenerId
            ;
            
            function cycle() {
              if (needOpacity !== nowOpacity) {                       // Оператор opacity in / opacity out
                nowOpacity = +( ( nowOpacity + step ).toFixed( 2 ) ); // В условии равенство, поэтому округляем, чтобы избежать проблем с погрешностями.
                setOpacity(img, nowOpacity);
                setTimeout(cycle, ms);
              } else if (nowOpacity == 0) {                           //Запускаем появление новой картинки вместо старой
                img.src = newSrc;
                listenerId = Event.set( img, "load", function() {
                  needOpacity = 1;
                  step = -step;
                  cycle();
                  Event.remove( img, "load", listenerId );
                })
              }
            }
            
            cycle();    // Всё готово, запускаем смену картинок
          }
        } )()
      ;
      
      /** Организуем управление альбомом */
      function startOperator(srcList, img, back, forward) {
        var n = 0;
        img.src = srcList[0];
        back.disabled = true;
        
        Event.set( back, "click", function() {
          if ( n > 0) {
            n--;
            forward.disabled = ( n >= srcList.length - 1 );
            this.disabled = ( n <= 0 );
            changeImg(img, srcList[n]);
          }
        } );
        
        Event.set( forward, "mouseup", function() {
          if ( n < srcList.length - 1 ) {
            n++;
            this.disabled = ( n >= srcList.length - 1 );
            back.disabled = ( n <= 0 )
            changeImg(img, srcList[n]);
          }
        } )
      }
      
      /*
        Запускаем альбом, передавая оператору лист адресов, изображение и кнопки вперёд и назад.
      */
      
      startOperator( srcList, img, document.getElementById( "back" ), document.getElementById( "forward" ) );
HTML5
1
2
3
    </script>
  </body>
</html>
Можно посмотреть Живой пример.

Проверено в Chrome 19, IE8, FF11.
0
Заблокирован
25.05.2012, 12:01
GuardCat, всё верно.
кроме одного - следование каким-то сомнительным 'стандартам' не является, и не может являться признаком профессионализма.

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

Не по теме:

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

разница в написании (-ир и -ующий) - она принципиальна.

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

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



что до форума, который нельзя называть, то...
давным-давно, 'когда деревья были большими'(c), на площадке html.manual.ru существовал форум,
где ваш покорный слуга активно участвовал под никнеймом bes (и даже был там модератором пару лет).
форум там был на самодельной (и не особо удачной) платформе.
и был единым местом для всёго - и для HTML, и для CSS, и для JS... даже о политике вопросы были.

году этак в 2000 туда ворвался некий молоденький лошок по имени Илья Кантор и создал на той площадке проект http://algolist.manual.ru/
и всё бы неплохо (проект по алгоритмам полагаю очень удачным), но этот лошок решил вдруг, что он - самый большой дока рунета во всём, и в алгоритмах, и в html, и в css...
и первым делом просто тупо перевёл спецификацию CSS на русский язык и создал проект http://css.manual.ru/, который мною был жесточайшим образом раскритикован (именно за тупой дословный перевод с полным непониманием сути).

имхо, я тогда совершил ошибку.
а надо было, может, его похвалить, и не пошёл бы он далее портить народ...

но я не похвалил, а наоборот...
css Илья Кантор тогда забросил, ибо понял, что это дело - не по его уму.
и перешёл терзать всех своими тупыми дословными переводами ECMA-спецификаций.
и, надо сказать, что он добился в этом деле 'больших успехов'...
видите, вот вы полагаете, что тупое следование неким стандартам, прививаемое Кантором - это есть признак профессионализма.
и полагаете, что в javascript якобы существуют авторитеты, коим можно верить на слово...

да, СНАЧАЛА следует научиться 'стандартным навыкам' (побыть служакой-командиром),
но профессионал - он как раз командующий
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2012, 12:01
Помогаю со студенческими работами здесь

Скрытие и смена картинки
Привет всем. Ребят подскажите пожалуйста как в джавке осуществить такое дело: Есть 2 кнопки с надписями: Назад и Вперед, жмем кнопку...

Не работает смена картинки
&lt;body&gt; &lt;div id=newchar_bg&gt; &lt;form name=&quot;selclass&quot; &gt; &lt;div id=&quot;class&quot;&gt; ...

Клик и смена картинки
Всех с Наступающим! ))) Прошу помочь разобраться! Есть кнопка с бэкраундем girl.png При клике на эту кнопку открывается блок и картинка...

Смена картинки при нажатии
Доброго времени суток! Хочу с помощью JS сделать так,чтобы при клике мышкой менялась картинка. Пробую несколько вариантов: 1....

Смена картинки при нажатии
Есть форма,которая меняет картинку при клике. &lt;img src=&quot;box.jpg&quot; onclick='this.src=&quot;lut_1.jpg&quot;' /&gt; А надо сделать так, чтоб при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru