Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выборочная анимация 
:(
    Опции темы
minimalist
Дата 18.9.2010, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.9.2010

Репутация: нет
Всего: нет



Цитата

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> Задание 28 </title>
  <script type="text/javascript">
  var num=0;
    var imgs = new Array();
    for (var i = 1; i < 4; i=i+1) imgs.push(new Image());
    imgs[0].src = "фотки/pic1.jpg";
    imgs[1].src = "фотки/pic2.jpg";
    imgs[2].src = "фотки/pic3.jpg";
function shownext() {
        num = (num >= imgs.length - 1) ? 0 : num + 1;
        document.getElementById("mypic").src = imgs[num].src;
    }
  function startshow(sp)
  {
  howfast=1600
  if (sp.toUpperCase() == "SLOW")
  {howfast=2400}
  if (sp.toUpperCase() == "FAST")
  {howfast=800}
  alert(howfast)
     setInterval(shownext,howfast);
  }
  </script>
 </head>
 <body>
  <center>
  <form name="myform">
  <img src="фотки/pic1.jpg" id="mypic" width="600" height="374" border="0">
  <p>Задайте скорость анимации: (fast, medium, slow) <input type="text" value="medium" name="speed">
  <p><a href="#" onclick="startshow(document.myform.speed.value)">Показать анимацию</a>
  </center>
 </body>
</html>

есть вариант более правильного кода????
Этот как-то не правильно работает
PM MAIL   Вверх
Amphiluke
Дата 18.9.2010, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Вы намеренно не закрываете теги (p, form)? smile

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> Задание 28 </title>
  <script type="text/javascript">
  var num=0;
    var imgs = new Array();
    for (var i = 1; i < 4; i=i+1) imgs.push(new Image());
    imgs[0].src = "фотки/pic1.jpg";
    imgs[1].src = "фотки/pic2.jpg";
    imgs[2].src = "фотки/pic3.jpg";
function shownext() {
        num = (num >= imgs.length - 1) ? 0 : num + 1;
        document.getElementById("mypic").src = imgs[num].src;
    }
    var t = null;
  function startshow(sp)
  {
  howfast=1600
  if (sp.toUpperCase() == "SLOW")
  {howfast=2400}
  if (sp.toUpperCase() == "FAST")
  {howfast=800}
  alert(howfast)
  if (t) clearInterval(t);
     t = setInterval(shownext,howfast);
  }
  </script>
 </head>
 <body>
  <center>
  <form name="myform" action="#">
  <img src="фотки/pic1.jpg" id="mypic" width="600" height="374" border="0">
  <p>Задайте скорость анимации: (fast, medium, slow) <input type="text" value="medium" name="speed"></p>
  <p><a href="#" onclick="startshow(document.myform.speed.value)">Показать анимацию</a></p>
  </form>
  </center>
 </body>
</html>

PM   Вверх
minimalist
  Дата 18.9.2010, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.9.2010

Репутация: нет
Всего: нет



ну <p> не обязательно....а вот за все остальное спасибо!!!!!!!! smile 
PM MAIL   Вверх
magelan
Дата 18.9.2010, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 3
Всего: 16



не в упрек, а красоты ради...

Код

var num=0, imgs = [];
for ( var i = 1; i < 4; i++ )
   imgs.push( new Image());
for ( var i = 0; i < 3; i++ )
    imgs[ i ].src = "фотки/pic"+ ( i + 1 ) + ".jpg";

PM MAIL   Вверх
Amphiluke
Дата 19.9.2010, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата(magelan @  19.9.2010,  01:45 Найти цитируемый пост)
не в упрек, а красоты ради...

Дак зачем же два цикла подряд в таком случае? Это неэффективно…
Код

for (var i = 0; i < 3; i++) {
    imgs.push(new Image());
    imgs[i].src = "фотки/pic" + (i+1).toString() + ".jpg";
}


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

Добавлено через 6 минут и 51 секунду
Кстати, если вспомнить, что метод push возвращает новую длину массива, можно записать цикл предзагрузки и так:
Код

for (var i = 0; i < 3; i++) {
    imgs[imgs.push(new Image()) - 1].src = "фотки/pic" + (i+1).toString() + ".jpg";
}


PM   Вверх
minimalist
Дата 19.9.2010, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.9.2010

Репутация: нет
Всего: нет



Код

for (var i = 0; i < 3; i++) {
    imgs[imgs.push(new Image()) - 1].src = "фотки/pic" + (i+1).toString() + ".jpg";
}


Amphiluke вы не могли бы объяснить действие кода в imgs[imgs.push(new Image()) - 1]????!!!!!!!!! smile 
PM MAIL   Вверх
Amphiluke
Дата 19.9.2010, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Эээ. А что конкретно не ясно? Я уже написал выше: метод push объекта Array добавляет в конец массива новый элемент и возвращает новую длину массива с учетом добавленного элемента. Поэтому в квадратных скобках после этого получается: imgs[новая_длина - 1]. Это и есть обращение к последнему добавленному элементу (new Image()). Поэтому можно сразу получить доступ к его атрибуту src. Вот и получается запись
Код

imgs[imgs.push(new Image()) - 1].src = ...


Добавлено через 6 минут и 29 секунд
P.S. Этим, конечно, не стоит злоупотреблять. Код должен оставаться читабельным, поэтому краткость не должна быть в ущерб ясности кода.
PM   Вверх
minimalist
Дата 19.9.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.9.2010

Репутация: нет
Всего: нет



тогда почему -1.....а не +1....по моей логике...если добавляет новый элемент в массив..и соответственно новая длина массива...то +
или я чего-то не понимаю????
PM MAIL   Вверх
Amphiluke
Дата 19.9.2010, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Массив индексируется с нуля. Поэтому последний элемент всегда имеет индекс, на единицу меньший, чем длина массива.

Добавлено через 1 минуту и 41 секунду
Это во-первых.

А во-вторых, метод push возвращает длину уже с учетом добавленного элемента.
PM   Вверх
minimalist
Дата 19.9.2010, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.9.2010

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.