这是我到目前为止所做的:
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];
此时我已经意识到我已经超过了我的头脑。
非常感谢帮助!
非常感谢您的时间:)
答案 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;
}
}
};
你真棒!谢谢:))