Javascript functionname.arguments在Mozilla中不起作用

Javascript functionname.arguments在Mozilla中不起作用,javascript,Javascript,我在IE中有完美的功能,但在mozilla中没有 function showhide() { alert("test"); var args=showhide.arguments; alert("1"+args); for (i=0; i<(args.length); i=i+2) { alert("2"+args); eval(args[i]+".style.display='"+args[i+1]+"'"); } alert("3"+args); } 我在mo

我在IE中有完美的功能,但在mozilla中没有

function showhide()
{
 alert("test");
 var args=showhide.arguments;
 alert("1"+args);
 for (i=0; i<(args.length); i=i+2) 
 {
  alert("2"+args);
  eval(args[i]+".style.display='"+args[i+1]+"'");
 }
 alert("3"+args);
}
我在mozilla中得到了警报测试,但警报的其余部分不会显示。

只需使用参数,而不是showhide。arguments

函数。arguments是,只需单独使用参数

var args = arguments;
编辑

替代你所做的事情

function showHide(elementStyles) {
    for (id in elementStyles) {
      alert(id +  " / new style=" + elementStyles[id]);
      document.getElementById(id).style.display = elementStyles[id];
    }
}

showHide({
    myElementId1: "block", 
    myElementId2: "none",
    myElementId3: "inline"
});
或者使用参数


你的代码在很多方面都很糟糕:1你泄露了一个全局i,2你以不恰当的方式使用eval。除此之外,考虑使用像jQuery这样的框架。忽略那些没有足够信息的人使用jQuery的建议来做这个建议。@切丹:不要使用EVAL。这几乎总是错误的解决方案。为什么要使用它?我假设参数是成对的ID和显示设置。如果是这样,请尝试document.getElementByIdargs[i].style.displayargs[i+1]仍然只测试打印,之后我将获得类似错误的未捕获异常:[异常…提示被用户nsresult中止:0x80040111 NS\u错误\u不可用位置:JS frame::resource://gre/components/nsPrompter.js ::openTabPrompt::第468行数据:否]
function showHide() {
   for (var i = 0; i < arguments.length; i += 2) {
      alert(arguments[i] + "/" + arguments[i + 1]);
      ... something other than eval here
   }
}

showHide("myElementId1", "block", "myElementId2", "none");