2012-09-18 146 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進行評估。始終傳遞函數或函數的引用。

相關問題