设置相应值的正确方法是什么?
如何使用“for ... in”来完成这项工作。
我与self [state]关联的函数似乎在具有最新状态[state]的循环之后运行,而不是在循环期间与其关联的函数。
cssbtn = function(id, states, state){
var self = document.getElementById(id);
var states = states || {'off': '0px 0px', 'selected': '-20px 0px', 'selected2': '-40px 0px' };
var state = state || 'off';
for (state in states) {
self[state] = function (){
alert(states[state]); //demo purposes
}
}
self.onmouseover = function(evt){
self.selected();
}
self.onmouseout= function(evt){
self.off();
}
self.onclick= function(evt){
self.selected2();
}
return self;
}
答案 0 :(得分:1)
一个正确的答案是:
self[state] = (function(i) { return function() { alert(i) } })(states[state]);
偶然发现: How can one de-reference JavaScript variables when enclosing an outer scope
这是唯一的方法吗?一种更明显/优雅的多语言(不是javascript)方法?