当前位置: 代码迷 >> JavaScript >> 更改document.form1.Q1 [n + 1] .value中的变量
  详细解决方案

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

热度:17   发布时间:2023-06-13 11:37:42.0

这是我到目前为止的内容:

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];

在这一点上,我已经意识到自己的想法。

帮助将不胜感激!

非常感谢您的宝贵时间 :)

这种使用string变量的方法还不错,但是您必须将其用作的变量-您使用了字符串文字'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;
}

非常感谢大家的投入! 我一直在使用另一种脚本语言,因此想方设法在这里使用方括号就可以了-糟糕!

我现在可以使用:

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;
                        }
                }
    }; 

你们真棒! 谢谢 :)

  相关解决方案