代码之家  ›  专栏  ›  技术社区  ›  Brian

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

  •  2
  • Brian  · 技术社区  · 16 年前

    我试图将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 回复  |  直到 11 年前
        1
  •  7
  •   Jason Orendorff Oliver    16 年前

    你要做的就是改变这一行:

        function(task, story_id) {
    

    对此:

        function(task) {
    

    你不必在任何地方传递故事ID——它已经在内部函数的作用域中了!

        2
  •  0
  •   BenMorel Manish Pradhan    11 年前

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

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

        3
  •  -1
  •   Chad Grant    16 年前

    你有一个范围问题。

    快速修复:将故事ID定义为全局。

    var story_id;
    
    function activateSearch() { ....