2009-04-23 65 views
2

我試圖通過story_id到最裏面的內聯函數,但它始終爲0,即使它不是以0外部函數。我如何傳遞這個值?如何將參數傳遞到內聯javascript函數

function activateSearch(){ 
    if($('story_filter')) Event.observe('story_filter', 'keyup', 
    function(event) { 
     $('stories_table').select(".story").each(
     function(story) { 
      story_id = story.id.split('_')[1]; 
      story.select('.tableCell', '.indexCardContent').each(
      function(task, story_id) { 
       hideStoryRow(story_id); 
       task_filter = new RegExp($F('story_filter'), "i"); 
       if (task.innerHTML.match(task_filter)) 
       { 
        showStoryRow(story_id); 
        throw $break; 
       } 
      } 
     ); 
     } 
    ); 
    } 
); 
} 

回答

7

所有你需要做的,使這項工作是改變這一行:

function(task, story_id) { 

這樣:

function(task) { 

您不必通過任何地方story_id - 它已經在範圍在內部功能!

-1

你有一個範圍界定問題。

快速修復:定義story_id作爲一個全球性的。

var story_id; 

function activateSearch() { .... 
+0

變量`story_id` *爲*已經全球性的,因爲它是這裏介紹沒有`var`聲明。如果你有顯示在您的示例代碼或解釋, – 2009-04-23 15:35:12

0

你沒有。每個方法接受函數定義,然後爲Array中的每個元素調用該函數。如果您想使用內聯函數定義,則需要編寫自己的自定義每種方法。

對於這兩種可讀性和功能,我會打出來的最內側的內聯函數,然後在列表中的每個元素,召喚出你的函數。