繁体   English   中英

具有大量参数的Javascript函数

[英]Javascript function with large number of arguments

我需要调用带有许多参数的javascript函数。 有什么方法可以执行与以下代码相同的操作,但无需编写av1,av2,... av58的每个代码?

从1到58的for循环可以完成此工作。 但是定义函数时的语法如何?

<html>
<head>
<script>
function gft1(ff1, ff2, av1,av2, av3, av4, av5, av6, av7, av8,  av9,  av10,  av11,  av12,  av13,  av14,  av15,  av16,  av17,    av18,  av19,  av20,  av21,  av22,  av23,  av24,  av25,  av26,  av27,  av28,   av29,  av30,  av31,  av32,  av33,  av34,  av35,  av36,  av37,  av38,  av39,   av40,  av41,  av42,  av43,  av44,  av45,  av46,  av47,  av48,  av49,  av50,   av51,  av52,  av53,  av54,  av55,  av56,  av57,  av58)
{   
var uu=0;

    for ( y=1; y<=58;++ y)
        {
         uu = uu-(-document.getElementById('av'+y).value);
        }

document.getElementById(ff1).value=uu;
document.getElementById(ff2).value=uu;

}
var args = ['ff1','ff2'];
for (var i = 1; i <= 58; i++)
args.push("av" + i);
</script>  

</head>
 ....................................
   <html><input type="text" size="1" autocomplete="off"  onfocus="this.select()" name="<?php echo "av[$no]"?>" id="<?php echo "av{$no}" ? >" onkeyup="gft1.apply(null, args);"></html>

您可以使用for循环来填充参数池

然后使用apply调用它并传递参数

function gft1(){
    console.log(arguments);
}

var args = ['ff1','ff2'];
for (var i = 1; i <= 58; i++)
    args.push("av" + i);

gft1.apply(null, args);

看的使用apply 在这里

不知道您是否根本需要传递av1,av2,av3....何时可以简单地通过传递av完成。 另外,您没有执行任何操作av1,av2,av3,... ,您只是在处理av和从1到58的循环,并将y值附加到av以从DOM获取内容。

那么像这样的功能是不够的吗?

function gft1('ff1',ff2,'av'){
var uu=0;
   for ( y=1; y<=58;++ y){
         uu = uu-(-document.getElementById('av'+y).value);
                                            // ^^ y's value will vary which will query for `av1,av2,av3..`
        }

document.getElementById(ff1).value=uu;
document.getElementById(ff2).value=uu;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM