如何将参数传递给内联javascript函数

时间:2009-04-23 13:57:27

标签: javascript prototypejs

我正在尝试将story_id传递到最内层的内联函数,但它始终为0,即使它在外部函数中不是0。如何传递此值?

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;
              }
            }
          );
        }
      );
    }
  );
}

3 个答案:

答案 0 :(得分:7)

要做到这一点,你需要做的就是改变这一行:

    function(task, story_id) {

到此:

    function(task) {

你不必在任何地方传递story_id - 它已经在内部函数的范围内了!

答案 1 :(得分:0)

你没有。每个方法都接受函数定义,然后为Array中的每个元素调用该函数。如果要使用内联函数定义,则需要编写自己的自定义方法。

对于可读性和功能性,我将打破内部最内联函数,然后对列表中的每个元素调用函数。

答案 2 :(得分:-1)

你有一个范围问题。

快速修复:将story_id定义为全局。

var story_id;

function activateSearch() { ....