关于Javascript匿名函数的innerHTML

时间:2013-01-12 13:44:05

标签: javascript anonymous-function

我正在制作一个关于YouTube视频的数千个格式的程序。格式化粗略数字的功能正常。我的问题是通过匿名函数设置格式化的数字。这是我正在尝试的......

function main(arg){
  var viewCount = new Array();

  for(var i=0; i < arguments.length; i++){
      var viewCount = Format(document.getElementsByClassName(arguments[i])[i].textContent);
//  (function(){document.getElementsByClassName(arguments[i])[i].innerHTML = viewCount[i]})();          
  }
}

现在,这是一件棘手的事情。在Firebug上调试它,当我删除匿名函数的注释时,甚至var viewCount都会收到一条错误,说“ReferenceError:引用未定义的属性参数[i]”。但是当它回复时,它会按预期设置。

这是我完成的一个完整的测试平台:http://pastebin.com/JRPRQnv6

1 个答案:

答案 0 :(得分:2)

arguments [MDN]是每个函数中的一个特殊变量。您没有将任何参数传递给匿名函数,因此它是一个空对象。

如果要从外部函数访问arguments对象,则必须存储对它的引用。

示例:

 function main(arg){
  var viewCount = new Array();
  var args = arguments;

  for(var i=0; i < arguments.length; i++){
      var viewCount = Format(document.getElementsByClassName(arguments[i])[i].textContent);
      (function(){
          document.getElementsByClassName(args[i])[i].innerHTML = viewCount[i];
      })();          
  }
 }

但我没有理由在这里使用立即功能。另一个潜在的问题是您正在访问i的{​​{1}}元素,其中.getElementsByClassName是您的参数的循环索引。 i甚至可能不会返回这么多元素(即您使用了错误列表的错误索引)。

也许你打算这样做:

.getElementsByClassName