2

我需要你的帮助来解决以下问题:

使用以下名为 AddSub# 的函数,我想将名为 string# 的变量传递给主添加函数 (AddAll)

function AddSub1()
{       string11 = '11';
        string12= '12';
        string13= '13';
        AddAll(string11, string12, string13);
}

function AddSub2()
{       string21 = '21';
        string22= '22';
        string23= '23';
        AddAll(string21, string22, string23);
}

但如果我这样做:

function AddAll(string11, string12, string13, string21, string22, string23){
    document.write(string11);
    document.write(string12);
    document.write(string13);
    document.write(string21);
    document.write(string22);
    document.write(string23);
}

我调用函数 AddSub1 我得到: 11 12 13 undefined undefined undefined

然后,如果我调用 AddSub2 我得到: 21 22 23 undefined undefined undefined

如何正确地将变量传递给 AddAll 函数,以便获得 11 12 13 21 22 23?

非常感谢!

4

4 回答 4

3

您应该使用参数,一个类似数组的对象,对应于传递给函数的参数。

function AddAll(){
    var args = arguments; // arguments will give you an array 
                          // of all passed arguments to this function

    // here I keep just a reference in args, 
    // you can also use argumetns itself directly                              

    // To retrieve those arguements use this

    document.write(args[0]);
    document.write(args[1]); // ...etc

    // You can also make a loop over arguments

    for (var i = 1; i < arguments.length; i++) {
      document.write(arguments[i]);
    }
}

阅读有关参数的更多信息

笔记:

  • 不要不必要地使用全局变量
  • 不需要将参数传递给AddAll()as Array,只需comma(,)分开
于 2012-05-25T10:24:24.117 回答
0

我会使用@thecodeparadox 答案的修改版本

function AddAll(){
var args = arguments; // arguments will give you an array 

for(var i=0,j=args.length;i<j;i++)
document.write(args[i]);

}

这样,您传递给函数的字符串数量无关紧要,它们都将被写入。

从你的问题看来,这个函数将有多次迭代。

于 2012-05-25T10:32:26.203 回答
0

你可以改变你的函数,让它接受一个字符串数组。

function AddAll(strings) {
    for (var i = 0; i < strings.length; i++) {
        document.write(strings[i]);
    }
}

AddAll(["hello", "world"]);

或使用您的示例中的代码:

function AddSub2() {       
    string21 = '21';
    string22= '22';
    string23= '23';
    AddAll([string21, string22, string23]);
}
于 2012-05-25T10:29:07.800 回答
-1

您可以使用全局变量:

var string11,string12,string13,string21,string22,string23;

function AddSub1()
{       
    string11= '11';
    string12= '12';
    string13= '13';
}

function AddSub2()
{   
    string21= '21';
    string22= '22';
    string23= '23';
}

function AddAll(){
    document.write(string11);
    document.write(string12);
    document.write(string13);
    document.write(string21);
    document.write(string22);
    document.write(string23);
}

然后你打电话:

AddSub1();
AddSub2();
AddAll();
于 2012-05-25T10:29:22.290 回答