问题描述
这是我到目前为止的内容:
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];
在这一点上,我已经意识到自己的想法。
帮助将不胜感激!
非常感谢您的宝贵时间 :)
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;
}
2楼
非常感谢大家的投入! 我一直在使用另一种脚本语言,因此想方设法在这里使用方括号就可以了-糟糕!
我现在可以使用:
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;
}
}
};
你们真棒! 谢谢 :)