簡體   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