pointIdx
не определено, поскольку полный обратный вызов для анимации jQuery не имеет параметров, доступных для использования.
http://api.jquery.com/animate/
полный
Тип: Function()
Функция вызываемая после завершения анимации.
Итак, когда вы включите параметр pointIdx
в функции обратного вызова одушевленные полной, как этот
function(pointIdx) {
вы перезапись переменная pointIdx
. Поскольку JavaScript использует стек лексической переменную среду, pointIdx
проталкиваются в стек с значением, переданным в от полного обратного вызова. Это значение undefined
, и при попытке прочитать значение переменной pointIdx
внутри контекста выполнения полного обратного вызова, он получает самое верхнее значение стеки, который undefined
. Вот почему pointIdx
здесь не определено.
Чтобы сохранить значение pointIdx
внутри этого обратного вызова, вам необходимо удалить его из параметров, а также вам нужно закрыть его с помощью IIFE.
jsFiddle Demo
for(var pointIdx=0; pointIdx < points.length; pointIdx++) {
..
..
// animate move.
//close over pointIdx
(function(pointIdx){
//now the execution context is inside of the anonymous function
//and the value of pointIdx in the loop is stored in
//variable pointIdx (same name for consistency) is at the top of that variable environment
$('#my_id', gameWindow.document).animate({ left: "50px" ,top: "50px" }, 1500, 'linear',
function() {
console.log("Animation: Iteration=" + pointIdx); // pointIdx will now contain the iteration value from the for loop
...
...
}
)
})(pointIdx);
}
вам не нужен параметр pointIdx в функции живого. попробуйте удалить его. Кроме того, вам не хватает цитаты в '#my_id, gameWindow.document. Это должно быть «#my_id, gameWindow.document» –
Вы правы, но это должно быть: $ ('# my_id', gameWindow.document) .animate (....) – Shvalb
, так как я могу передать параметр в его полный Перезвони ?? – Shvalb