Речь идет о замыканиях, вам нужно привязать переменную к вашим элементам.
function bindValue (n, videos) {
return function() {
console.log(n)
videos_flags[n] = true;
}
}
for( var i = 0 ; i < iframes.length ; i++ ) {
videos[i] = new Vimeo.Player( iframes[i], options );
videos[i].on('play', bindValue(i, videos_flags));
}
Рабочий пример здесь . (добавлены опции при создании видеоплеера только для того, чтобы избежать дополнительных атрибутов data-vimeo-id или data-vimeo-url, необходимых для проигрывателя, они вам не нужны)
Еще лучшее решение с let (переменная i - это все, что вам нужно изменить):
for( let i = 0 ; i < iframes.length ; i++ ) {
videos[i] = new Vimeo.Player( iframes[i], options );
videos[i].on('play', function( data ) {
alert(i)
videos_flags[i] = true;
} );
}
Пример здесь .
Лучшее объяснение того, почему здесь .