Похоже, что единственный доступный параметр представляет состояние.
Поскольку кажется, что вы передаете оцениваемую строку, вам может потребоваться создать отдельную функцию для каждой из них:
function foo( status, player ) {
// do something with status and player
}
ytplayer1.addEventListener("onStateChange", "foo1");
function foo1( status ) {
foo( status, ytplayer1 );
}
ytplayer2.addEventListener("onStateChange", "foo2");
function foo2( status ) {
foo( status, ytplayer2 );
}
ytplayer3.addEventListener("onStateChange", "foo3");
function foo3( status ) {
foo( status, ytplayer3 );
}
или вы можете попробовать передать всю строку анонимной функции:
function foo( status, player ) {
// do something with status and player
}
ytplayer1.addEventListener("onStateChange", "(function(status){foo(status,ytplayer1);})");
ytplayer2.addEventListener("onStateChange", "(function(status){foo(status,ytplayer2);})");
ytplayer3.addEventListener("onStateChange", "(function(status){foo(status,ytplayer3);})");
РЕДАКТИРОВАТЬ: * Общий пример создания уникальных функций в пространстве имен.
// gets called by the namespaced functions
function foo( status, player ) {
// do something with status and player
}
// create some namespace
window.myNamespace = {};
// this gets called to create a new function in the namespace,
// and call addEventListener, which references the proper function
function funcFactory( player, i ) {
// create a new function in myNamespace
window.myNamespace[ "foo" + i ] = function( status ) {
foo( status, player );
};
// Add event listener that calls that function
player.addEventListener( "onStateChange", "window.myNamespace.foo" + i );
}
// your loop
for( var i = 1; i < 10; i++ ) {
var playa = someGeneratedPlayer();
funcFactory( playa, i );
}