1

设置相应值的正确方法是什么?
如何使用“for ... in”来完成这项工作。

我与 self[state] 关联的函数似乎在循环之后以 states[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;
}
4

1 回答 1

1

一个正确的答案是:

self[state] = (function(i) { return function() { alert(i) } })(states[state]);

偶然发现它: 如何在封闭外部范围时取消引用 JavaScript 变量

这是唯一的方法吗?更明显/优雅的多语言(不是 javascript)方法?

于 2012-06-18T16:32:14.883 回答