如何在具有本地数据的循环内创建JavaScript函数?

时间:2011-10-20 15:03:54

标签: javascript ruby-on-rails-3 functional-programming

  

可能重复:
  Access outside variable in loop from Javascript closure

我想在我的rails应用程序中添加键盘快捷键,以便按下例如CTRL-N将导致访问通知页面(无论是什么)。这适用于每页只有一个快捷方式,但在一个页面上没有很多快捷方式。

我做了以下事情:

  1. 添加到链接快捷方式等特殊元素。我添加了一个帮助器,以便link_to_shortcut_name生成HTML代码,如

    <a href="/notices" class="current shortcut" data-path="/notices" data-shortcut="ctrl+n" title="Notice (ctrl+n)">Notice</a>
    
  2. 我想在javascript中解释数据。为此,我在application.js添加了以下代码:

    function _mapShortcuts() {
      var elements = document.getElementsByClassName("shortcut");
      for (var i = 0; i < elements.length; i++) {
        var ele = elements[i];
        var sc = ele.getAttribute('data-shortcut');
        var path = ele.getAttribute('data-path');
        shortcut.add(sc, function(){ 
          window.location = path;
        })
      }
    }
    $(function() {
      _mapShortcuts()
    });
    
  3. 我的期望是,每次访问最后一条路径时,通过按快捷方式向不同的快捷方式添加不同的访问路径。似乎我的天真实现一直在匿名函数内部绑定最后一个元素的路径。

    我应该如何编写该函数,以便对于不同的键盘快捷键,将绑定不同的路径?我已经尝试了3种不同的实现,并且所有这些实现都是相同的,所以故障应该是我的。

    PS:为了避免将来出现这类问题,我应该阅读哪本书?

0 个答案:

没有答案