этот код беспокоил меня целый день. Предположим, что ledCount = 9, код получает элементы по идентификатору без каких-либо проблем, но поскольку ему придется привязывать отдельную функцию onClick, а так как переменная i является локальной, функция writeLED всегда получает первый параметр 10 (который максимальный i + 1), но ему нужно будет получить текущий i + 1, как это делает getElementBy id i + 1. Любой может решить загадку?Javascript - использовать переменную в функции, в функции
function showLED(ledCount){
for(var i = 0;i<=(ledCount-1);i++){
if(color[i] == 0){
document.getElementById('buttonLED'+(i+1)).onclick = function(){writeLED((i+1),1); } ;
document.getElementById('buttonLED'+(i+1)).value="light is on";
}else{
document.getElementById('buttonLED'+(i+1)).onclick = function(){writeLED((i+1),0); } ;
document.getElementById('buttonLED'+(i+1)).value="light is off";
}
}
}
Несмотря на то, что это правильно, тем более современный способ сделать это с 'func.apply()' - так или иначе, OP должен прочитать о замыканиях. –
Вы можете просто затенять 'i', передав его как аргумент внешней функции. – Blender
@David - Я, хотя это применит, фактически выполнит функцию с явным 'this' и массивом аргументов, уверены ли вы, что O.K назначает ей обратный вызов? – 2013-03-09 21:45:25