2009-04-23 19 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渡す必要はありません - それはスコープにすでにあります内部機能で!

-1

あなたはスコープの問題があります。

クイックフィックス:story_idをグローバルとして定義します。

var story_id; 

function activateSearch() { .... 
+0

変数 'story_id' *はすでに' var'ステートメントなしでここに導入されているので、既にグローバルです。 –

+0

あなたのサンプルコードにそのことを示したり説明した方がよいでしょう。 –

0

あなたはしません。各メソッドは、関数定義を取得し、Array内の各要素に対してその関数を呼び出します。インライン関数定義を使用する場合は、独自のカスタムメソッドを記述する必要があります。

わかりやすい機能のために、私は最も内側のインライン関数を抜き出して、リストの各要素について、関数に呼び出します。これに

function(task, story_id) { 

関連する問題