2012-09-18 62 views
0

想要在查找它之后传递一个简单的整数函数。代码如下:将参数传递给匿名函数

$("#play").click(function() { 
    var elementNumber; 
    var properElement; 
    for (var i = 0; i < playlistLength; i++) { 
     if (listOfElements[i].type == 'video' && listOfElements[i].position == 0) { 
      elementNumber = i; 
     } 
    }; 
    document.getElementById(listOfElements[elementNumber].name).play(); 
    properElement = listOfElements[elementNumber]; 
    console.log(properElement); // gives out proper element; 
    setInterval("galleryElement.draw(properElement.name, properElement.type, properElement.position)", 33); // Cannot read property 'name' of undefined 
    return false; 
})​ 

我得到一个错误Cannot read property "name" of undefined?我怎样才能在那里传递论据?

在此先感谢!

+1

什么是'listOfElements'? – 0x499602D2

回答

0
$("#play").click(function() { 
    var elementNumber; 
    var properElement; 
    for (var i = 0; i < playlistLength; i++) { 
     if (listOfElements[i].type == 'video' && listOfElements[i].position == 0) { 
      elementNumber = i; 
     } 
    }; 
    document.getElementById(listOfElements[elementNumber].name).play(); 
    properElement = listOfElements[elementNumber]; 
    console.log(properElement); // gives out proper element; 
    setInterval(function() { 
     galleryElement.draw(properElement.name, properElement.type, properElement.position) 
    }, 33); 
    return false; 
}) 

或(不会在IE浏览器)

$("#play").click(function() { 
    var elementNumber; 
    var properElement; 
    for (var i = 0; i < playlistLength; i++) { 
     if (listOfElements[i].type == 'video' && listOfElements[i].position == 0) { 
      elementNumber = i; 
     } 
    }; 
    document.getElementById(listOfElements[elementNumber].name).play(); 
    properElement = listOfElements[elementNumber]; 
    console.log(properElement); // gives out proper element; 
    setInterval(galleryElement.draw, 33, properElement.name, properElement.type, properElement.position); 
    return false; 
}) 
+0

工程就像一个魅力!谢谢! – mjanisz1

+1

后一个不幸的是不会在IE中工作... – Christoph

+0

更新........ – Diode

0

尝试

setInterval(function(){ 
    galleryElement.draw(properElement.name, properElement.type, properElement.position) 
}, 33); 

你需要把properElement的功能范围执行。

+0

工程就像一个魅力!谢谢你的解释! – mjanisz1

0

如果你传递一个字符串到setInterval()你将失去​​你的properElement的范围。您可以直接通过functioncall(不带引号):

setInterval(function(){ 
    galleryElement.draw(properElement.name, properElement.type, properElement.position) 
}, 33); 

一般不建议将字符串传递到setInterval/Timeout,因为它需要通过eval进行评估。始终传递函数或函数的引用。

相关问题