2012-07-11 95 views
1

我想通过不同的动作提示不同的词,但它不起作用。无法将参数传递给循环

这是我的代码:

<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> 

回答

3

你需要创建一个封闭。这样的东西应该工作:

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/