• Страница 1 из 1
  • 1
for (var i=1;i<6;i++)...
Raiderr
Дата: Суббота, 07.08.2010, 01:42 | Сообщение # 1
болтун
Группа: Проверенные
Пользователь №: 673
Сообщений: 349
Получено оценок: 26
Code
<script type="text/javascript">
     for (var i=1;i<6;i++){
         var a=document.createElement('img');
         a.src='/products/' + i + '.gif';
         document.getElementById('LOL').appendChild(a);
     }
</script>

создает:
Code
<img src="/products/1/lol.gif" />
<img src="/products/2/lol.gif" />
<img src="/products/3/lol.gif" />
<img src="/products/4/lol.gif" />
<img src="/products/5/lol.gif" />

Как создать такое?

Code
<a href="/products/1/" target="_blank"><img src="/products/1/lol.gif" /></a>
<a href="/products/2/" target="_blank"><img src="/products/2/lol.gif" /></a>
<a href="/products/3/" target="_blank"><img src="/products/3/lol.gif" /></a>
<a href="/products/4/" target="_blank"><img src="/products/4/lol.gif" /></a>
<a href="/products/5/" target="_blank"><img src="/products/5/lol.gif" /></a>


Новый кавер Jar of Hearts: http://www.youtube.com/watch?v=OLkXQMHVRhI
  
DSC
Дата: Суббота, 07.08.2010, 10:25 | Сообщение # 2
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Code
<script type='text/javascript'>
for(i=1;i<6;i++){
   var a=document.createElement('a');
   a.href='/products/'+i+'/';
   a.target='_blank';
   a.innerHTML='<img src="/products/'+i+'/lol.gif"/>';
   document.getElementById('LOL').appendChild(a);
}
</script>

Можно конечно и так:
Code
<script type='text/javascript'>
for(i=1;i<6;i++){
   var a=document.createElement('a');
   a.href='/products/'+i+'/';
   a.target='_blank';
   img=document.createElement('img');
   img.src='/products/'+i+'/lol.gif';
   a.appendChild(img);
   document.getElementById('LOL').appendChild(a);
}
</script>

Но первый вариант явно короче! ^_^


aka Latro
  
d1
Дата: Суббота, 07.08.2010, 17:44 | Сообщение # 3
молчун
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Code
<div id="cicl1"></div>
-html
Code
<script>
for (var i=1;i<6;i++)
{document.getElementById('cicl1').innerHTML+='<a href="/products/'+i+'/" target="_blank"><img src="/products/'+i+'/lol.gif" /></a>'}
</script>
-js
  
Aleko
Дата: Воскресенье, 08.08.2010, 01:58 | Сообщение # 4
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
d1, выполнение вашей функции при тысяче ссылок занимает 48238 миллисекунд, вы бы хоть смотрели что вообще пишите.

Вот 2 моих варианта:

Самый короткий - не требует оборачивающего дива(время выполнения для 1000 ссылок - 135мс)

Code
<script>
document.write((function(a,b,c){while(--b)c='<a href=/'.concat(a,b,'/ target=_blank><img src=/',a,b,'/lol.gif></a>',c);return c})('products/',6,''))
</script>

Самый быстрый вариант - с оборачивающим дивом (время выполнения для 1000 ссылок - 112мс)

Code
<script>
document.getElementById('lol').innerHTML=(function(a,b,c){while(--b)c='<a href=/'.concat(a,b,'/ target=_blank><img src=/',a,b,'/lol.gif></a>',c);return c})('products/',6,'')
</script>


Бесплатные обои.
  
d1
Дата: Пятница, 13.08.2010, 18:55 | Сообщение # 5
молчун
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Quote (d1)
48238 миллисекунд,
- Aleko, не могли обьяснить в чём причина такогo долгого выполнения?
  
Aleko
Дата: Пятница, 13.08.2010, 21:14 | Сообщение # 6
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
d1, конечно могу. У вас при каждой интерации идет обновление страницы и модификация dom, что требует значительного времени. В остальных же вариантах страница обновляется лишь один раз.

Бесплатные обои.
  
d1
Дата: Понедельник, 16.08.2010, 17:38 | Сообщение # 7
молчун
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Aleko, спс всё понятно. Есть ещё один вопрос. Что быстрее функция jQuery.each() или выше приведённый цикл for?

Сообщение отредактировал d1 - Понедельник, 16.08.2010, 17:40
  
Aleko
Дата: Понедельник, 16.08.2010, 21:50 | Сообщение # 8
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
d1, цикл конечно, если правильно написать. Можете почитать о быстродействии циклов. На сколько я помню, самый быстрый цикл - обратный for

Бесплатные обои.
  
d1
Дата: Вторник, 17.08.2010, 15:02 | Сообщение # 9
молчун
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Quote (Aleko)
обратный for
тоесть к примеру
Code
for(i=12;i>2;i--)
  
d1
Дата: Вторник, 17.08.2010, 15:05 | Сообщение # 10
молчун
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Quote (Aleko)
обратный for
тоесть к примеру
Code
for(i=12;i>2;i--)
  
Raiderr
Дата: Вторник, 17.08.2010, 16:51 | Сообщение # 11
болтун
Группа: Проверенные
Пользователь №: 673
Сообщений: 349
Получено оценок: 26
Quote (d1)
тоесть к примеру

да


Новый кавер Jar of Hearts: http://www.youtube.com/watch?v=OLkXQMHVRhI
  
Aleko
Дата: Вторник, 17.08.2010, 19:23 | Сообщение # 12
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (Raiderr)
да

нет

Code
for(var i=12;i--;)


Бесплатные обои.
  
  • Страница 1 из 1
  • 1
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.