Сообщение от platedz
|
Подскажите, как правильно выполнить следующее
for(var i=0; i<document.getElementsByName("my_name").length; i++)
{
document.getElementsByName("my_name")[i].onkeyup = function(i)
{
console.log(i);
}
}
|
Хрестоматийный пример для использования
замыканий.
Кстати так:
for(var i=0; i<document.getElementsByName("my_name").length; i++){
document.getElementsByName("my_name")[i].onkeyup = ...
}
делать не рекомендуется, ибо каждую итерацию цикла у вас сначала идёт получение заново всех элементов ByName("my_name"), затем получение заново длины, а после, в теле цикла, ещё раз получение всех элементов ByName("my_name"). Всё это вещи тратящие вычислительное время. В современных браузерах предусмотрено всяческое кеширование подобных случаев на уровне движка, но я бы не рекомендовал слишком уж полагаться на это.
Более экономичный вариант:
for(var i=0, my_name=document.getElementsByName("my_name"), l=my_name.length; i<l; i++){
my_name[i].onkeyup = ...
}
P.S. Ну и лично мне больше всего нравится для таких случаев использовать обратный перебор
:
var my_name=document.getElementsByName("my_name"), i=my_name.length;
while(i--){
my_name[i].onkeyup = ...
}
Пример: Если не разобрались сами с замыканиями.
for(var i=0, my_name=document.getElementsByName("my_name"), l=my_name.length; i<l; i++){
my_name[i].onkeyup = function(i){
return function(){
console.log(i);
}
}(i)
}