for (var i=1;i<6;i++)...
Raiderr
Группа: Проверенные
Пользователь №: 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
Группа: Проверенные
Пользователь №: 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
Группа: Проверенные
Пользователь №: 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
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
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Quote (d1 )
48238 миллисекунд,
- Aleko , не могли обьяснить в чём причина такогo долгого выполнения?
Aleko
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
d1 , конечно могу. У вас при каждой интерации идет обновление страницы и модификация dom, что требует значительного времени. В остальных же вариантах страница обновляется лишь один раз.Бесплатные обои.
d1
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Aleko , спс всё понятно. Есть ещё один вопрос. Что быстрее функция jQuery.each() или выше приведённый цикл for ?Сообщение отредактировал d1 - Понедельник, 16.08.2010, 17:40
Aleko
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
d1 , цикл конечно, если правильно написать. Можете почитать о быстродействии циклов. На сколько я помню, самый быстрый цикл - обратный forБесплатные обои.
d1
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Quote (Aleko )
обратный for
тоесть к примеру
d1
Группа: Проверенные
Пользователь №: 2039
Сообщений: 36
Quote (Aleko )
обратный for
тоесть к примеру
Raiderr
Группа: Проверенные
Пользователь №: 673
Сообщений: 349
Получено оценок: 26
Quote (d1 )
тоесть к примеру
даНовый кавер Jar of Hearts: http://www.youtube.com/watch?v=OLkXQMHVRhI
Aleko
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
нет
Бесплатные обои.