Javascript和Firefox 4问题
作者:互联网
下面的代码在FF3.X和IE7到9中工作正常,但在FF4中没有.
我的代码在我的文件中的2个位置:
var arguments = "method=getoptions";
arguments += "&dropzone=" + dictKey;
arguments += "&format=disc";
arguments += "&datasetid=" + datasetid;
arguments += "&varnumber=" + varnumber;
arguments += "&varSectionId=" + varSectionId;
arguments += "&catindex=" + catIndex;
arguments += "&defaultid=dv_cat_opts_default_body";
arguments += "&mmocid=dv_cat_opts_mmoc_body";
alert(arguments);
哪个产生
method=getoptions&dropzone=Row_1&format=disc&datasetid=1&varnumber=206&varSectionId=FUV&catindex=&defaultid=dv_cat_opts_default_body&mmocid=dv_cat_opts_mmoc_body
这是正确的,但文件中的其他地方的代码相同
var arguments = "method=getoptions";
arguments += "&dropzone=" + dictKey;
arguments += "&format=disc";
arguments += "&datasetid=" + datasetid;
arguments += "&varnumber=" + varnumber;
arguments += "&varSectionId=" + varSectionId;
arguments += "&catindex=" + catIndex;
arguments += "&defaultid=dv_cat_opts_default_body";
arguments += "&mmocid=dv_cat_opts_mmoc_body";
alert(arguments);
输出这最终在我的ajax中调用错误:
[object Arguments]&dropzone=Row_1&format=cont&datasetid=1&varnumber=1125&varSectionId=FUV&catindex=&defaultid=dv_cont_opts_default_body&mmocid=dv_cont_opts_mmoc_body
那么该对象参数的处理是什么?
解决方法:
变量参数是函数中可用的特殊对象,它包含传递给函数的所有参数.
https://developer.mozilla.org/en/JavaScript/Reference/functions_and_function_scope/arguments
换句话说,将变量名称参数视为保留关键字 – 就像你永远不会命名变量一样,如果不使用变量名参数,或者你会得到意想不到的结果.
为什么这里有这个东西,你可能会问 – 它允许你编写使用不同数量和参数顺序的函数.在您的函数中,您将编写代码来确定传递了哪些参数以及它们是什么.它需要更多代码,但您可以使用此技术创建一些非常灵活的可重用代码.查看Mootools或jQuery的一些内部函数,你会发现这些流行的框架大量使用了arguments对象.
考虑:
function alertError() {
var exception = false;
var message = false;
for( var i = 0; i < arguments.length; i++ ) {
if (typeof arguments[i] == 'object')
exception = arguments[i];
if (typeof arguments[i] == 'string')
message = arguments[i];
}
if (message == false)
message = 'No details';
if (exception != false)
message += ', exception: '+exception.message;
alert('There has been an error: '+message);
}
alertError("No exceptions here!");
try {
var t = t.doesnotexist;
} catch (e) {
alertError(e, 'Testing');
}
在这里试试:http://jsfiddle.net/zwGMJ/
标签:firefox4,javascript,jquery,firefox 来源: https://codeday.me/bug/20190903/1796519.html