【问题标题】:Can't passing parameter to the loop无法将参数传递给循环
【发布时间】:2012-07-11 03:35:53
【问题描述】:

我想根据不同的动作提醒不同的词,但它不起作用。

这是我的代码:

<input id=main value="ddddd">
 <script type="text/javascript">
var obj = document.getElementById("main");
var items = [ "click", "keypress" ];
for ( var i = 0; i < items.length; i++ ) {
        obj[ "on" + items[i] ] = function() {
            alert( "Thanks for your " + items[i] );
        };
}
 </script>

【问题讨论】:

    标签: javascript loops scope


    【解决方案1】:

    您需要创建一个闭包。类似的东西应该可以工作:

    function makeClosure(eventName) {
        return function() {
            alert( "Thanks for your " + eventName );
        };
    }
    
    var obj = document.getElementById("main");
    var items = [ "click", "keypress" ];
    for ( var i = 0; i < items.length; i++ ) {
            obj[ "on" + items[i]] = makeClosure(items[i]);
    }​
    

    jsFiddle:http://jsfiddle.net/NQKqk/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-30
      • 2011-09-27
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 2015-11-11
      相关资源
      最近更新 更多