все решилось гораздо проще, правда, как-то некрасиво:
Код:
eval('document.getElementById(\'element_id\').onmouseower = function(e) {'+
'alert(\''+myvar+'\');'+ // здесь myvar из переменной становится константой для ЭТОЙ функции!!!
...
statement
...
'return false;'+
'};');
Цитата 39-я набла Куроводства:
Оказывается, можно обойтись и без создания функции createFunc(), однако это потребует от нас написания двух замыканий на каждом обороте цикла:
Код:
function create(n) {
var arr = [];
for (var i=1; i<n; i++) {
// Создаем функцию...
arr[i] = function(x) {
// создание замыкания с лексической x
return function() { alert(x*x) }
}(i); // и тут же ее вызываем с параметром i!
}
return arr;
}
Это работает по той же самой причине, что и код выше — за счет копирования i во вновь создаваемую при каждом вызове переменную x.
|