请教一下,如何将js函数作为另一函数的参数调用,被调用的函数是带参数的

在Receive()中执行PostUrl()函数,在执行PostUrl函数时,将contents(urls)函数作为PostUrl函的参数传入,作为回调函数使用,但con... 在Receive()中执行PostUrl()函数,在执行PostUrl函数时,将contents(urls)函数作为PostUrl函的参数传入,作为回调函数使用,但contents()函数是带参数的,如何将参数一并传入呢?主要代码如下:
<script>
function Receive() {
var action = "Receive";
var URL = "/ControlUnit/Menu/sms_submit.ashx";
var finterid = 9702;
var ftrantype = 301;
var fuserid = 3;
var urls = "/ControlUnit/Menu/MessageShow.aspx";
PostUrl(URL, action, finterid, ftrantype, fuserid, fn(urls));
//说明,这里fn(urls)作为参数传入是有问题的,因为它已经被执行了,而不是作为参数传入。
}
var fn = function contents(urls) {
if (urls != "") {
var userAgent = navigator.userAgent.toLowerCase();
var is_moz = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
if (is_moz) {
//window.opener.parent.frames['iframeright'].document.location.href = urls;
}
else {
var pWindow = window.dialogArguments;
//window.dialogArguments.top.iframeright.location.href = urls;
}
window.close();
}
};

function PostUrl(URL, action, finterid, ftantypeid, fuserid, fn) {
var datastr = "{'action':'" + action
+ "','FUserID':'" + fuserid
+ "','FInterID':'" + finterid
+ "','FTranType':'" + ftantypeid
+ "'}";
var datajson = eval("(" + datastr + ")");
//var datajson = datastr;
$.ajax({
type: "Post",
url: URL,
data: datajson,
//contentType: "application/json",
dataType: "Json",
success: function (data) {
fn(urls);
error: function (err) {
alert(err);
}
});
}
<html>
<body>
<div>
<input type = "text" onclick= "Receive();" />
</div>
</body>
</html>
展开
 我来答
adjite
推荐于2016-01-01 · TA获得超过1270个赞
知道小有建树答主
回答量:848
采纳率:66%
帮助的人:236万
展开全部
PostUrl(URL, action, finterid, ftrantype, fuserid, fn,urls);

function PostUrl(URL, action, finterid, ftantypeid, fuserid, fn,urls) {
    fn(urls);
}
追问
urls也是作为单独的参数调用啊,那fn万一有很多个参数,不是得长长的一串了吗?有没有更好的办法啊
追答
PostUrl(URL, action, finterid, ftrantype, fuserid, fn,urls);

function PostUrl(URL, action, finterid, ftantypeid, fuserid, fn,urls) {
    fn(urls);
}

function fn(urls) {
    alert(urls[0]);
    alert(urls[1]);
    ...
    alert(urls[n]);
}

function fn2(obj) {
    alert(obj.prop1);
    alert(obj.prop2);
    ...
    alert(obj.propN);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式