Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ЧаВО - часто задаваемые вопросы (faq) (https://javascript.ru/forum/misc/9459-chavo-chasto-zadavaemye-voprosy-faq.html)

Dim@ 02.08.2012 20:07

SHOCKj,
<style type="text/css">
.text{
 padding-left:10px;
}
</style>
<input type="text" class="text">
:blink:

Deff 24.08.2012 20:31

Как Подключить загружаемый скрипт после подгрузки DOM
<html>
<body>
<script type="text/javascript">
document.body.onload = function() {  //ondomready
 var script=document.createElement('script');
 script.src='http://hostjs-mybb2011.narod.ru/js/alert_tst.js';
 document.body.appendChild(script)
}
</script>
</body>
</html>

FINoM 22.11.2012 04:48

Очень простой приём "эмуляции" forEach
Может быть кому-то будет интересно.

Лично я использую forEach вместо for не только благодаря скрытию переменных от верхней области видимости, но и благодаря возможности именовать текущий элемент массива:
items.forEach( function( *!*item*/!*, i ){
   //...
});

вместо
for( var i = 0; i < items.length; i++ ) {
   //...
}


Согласитесь, item выглядит красивее, нежели items[i], особенно если использовать цикл в цикле: items[i][j][k].

Но, иногда, for лучше подходит для решения задачи: во-первых он в два раза быстрее (если использовать IE fallback, то и более, чем в два раза), что важно в сложных проектах, во-вторых можно менять массив как пожелаешь, так как количество итераций динамично и зависит от текущей длины массива, а не той, которая была в начале цикла.
items.splice( i--, 1 ); // такое не прокатит в forEach


Простое, но несколько громоздкое решение именования текущего элемента итерации:
for( var i = 0, item = items[ 0 ]; i < items.length; item = items[ ++i ] ) {
   //...
}
Теперь item === items[0].

tenshi 22.11.2012 22:39

for( var item= $i( items ); item(); ){
    console.log( item.value )
}

FINoM 22.11.2012 22:42

tenshi, понял, что ты имеешь в виду. Да, круто. Но не более производительно, чем forEach. И да, как ты предлагаешь менять массив?

tenshi 22.11.2012 22:47

а не надо менять массив во время итерирования - это и с for может плохо кончиться.

FINoM 22.11.2012 22:49

Цитата:

Сообщение от tenshi
это и с for может плохо кончиться.

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

tenshi 22.11.2012 22:50

for( var item= $i( items ); item.next(); ){ // создали итератор и пошли итерировать
    console.log( item.key(), item.val() ) // получили ключ и значение
    item.val( item.val() + 1 ) // увеличили значение
}

tenshi 22.11.2012 22:51

Цитата:

Сообщение от FINoM (Сообщение 217334)
Вообще, если ты пишешь что-либо, это может плохо кончиться. Модифицировать массив в цикле — нормальная практика, требующая просто немного внимания.

это опасная и как правило не нужная практика. контрпример в студию)

FINoM 22.11.2012 22:56

Цитата:

Сообщение от tenshi
не нужная практика

Угу, как и программирование в целом.
Цитата:

Сообщение от tenshi
контрпример в студию

Забей, оно тебе точно не понадобится.


Часовой пояс GMT +3, время: 15:27.