在document.form1.Q1 [n + 1] .value中更改变量

时间:2015-07-17 14:19:30

标签: javascript loops

这是我到目前为止所做的:

for (var n = 0; n < order.length; n++)
    {                 
        for (var i = 0; i < order.length; i++) 
            {
                if (order[i]==[n+1])
                    {
                        document.form1.Q1[n+1].value = [i+1];
                    }
            }
    };  

这就是我想要实现的目标,但不知道数组或表单中的问题数量会有多长(虽然它们总是彼此相等):

if (order[0] == 1)
{ 
document.form1.Q11.value = 1;
}

if (order[1] == 1)
{ 
document.form1.Q11.value = 2;
}

if (order[2] == 1)
{ 
document.form1.Q11.value = 3;
}

if (order[0] == 2)
{ 
document.form1.Q12.value = 1;
}

if (order[1] == 2)
{ 
document.form1.Q12.value = 2;
}

if (order[2] == 2)
{ 
document.form1.Q12.value = 3;
}

if (order[0] == 3)
{ 
document.form1.Q13.value = 1;
}

if (order[1] == 3)
{ 
document.form1.Q13.value = 2;
}

if (order[2] == 3)
{ 
document.form1.Q13.value = 3;
}  

我很确定我的问题是将变量[n + 1]插入:

document.form1.Q1[n+1].value = [i+1];  

我尝试了几条不同的路线,但似乎无法弄清楚如何以另一种方式做到这一点,而且我显然无法对其进行硬编码。

例如:

  for (var n = 0; n < order.length; n++)
    {                 
        var Q = n+1;
        var question = Q.toString(); 
          var string = "Q1" + question;

            for (var i = 0; i < order.length; i++) 
                {
                    if (order[i]==[n+1])
                        {
                            document.form1.['string'].value = [i+1];
                        }
                }
    };

document.forms['form-name']['string'].value = [i+1];

此时我已经意识到我已经超过了我的头脑。

非常感谢帮助!

非常感谢您的时间:)

2 个答案:

答案 0 :(得分:0)

使用string变量的方法并不错,但您必须将其用作property accessor中的变量 - 您使用了字符串文字'string'相当于访问.string属性。

for (var n = 0; n < order.length; n++) {                 
    var Q = n+1;
    var question = Q.toString(); 
    var string = "Q1" + question;

    for (var i = 0; i < order.length; i++) {
        if (order[i] == n+1) { // no array literal here!
            document.form1[string].value = i+1;
        }
    }
}

但是,有一种更简洁的方法,不需要嵌套循环:

for (var i = 0; i < order.length; i++) {
    var Q = order[i];
    var string = "Q1" + Q;
    document.forms.form1.elements[string].value = i+1;
}

答案 1 :(得分:0)

非常感谢大家的投入!我一直在使用另一种脚本语言,所以从那里认为它可以在这里工作的方括号 - 哎呀!

我现在正在使用它:

for (var n = 0; n < order.length; n++)
    {                 
        var Q = n+1;
        var question = Q.toString(); 
        var string = "Q1" + question;       

            for (var i = 0; i < order.length; i++) 
                {
                    if (order[i]==Q)
                        {
                            document.form1[string].value = i+1;
                        }
                }
    }; 

你真棒!谢谢:))