元素名称中的Javascript变量

时间:2012-03-10 09:58:54

标签: javascript

我有一个文本框和一个选择框,其中的选项与表中的列相同。我希望能够在框中输入,选择一个列,按一个按钮,然后将其复制到框中的每个框中。我在语法上遇到了困难,因为使用变量是阻止此工作的唯一因素。当我投入实际价值时,它运作正常。

function testScript(fill) {
choice=document.form1.column.value;
alert (fill);
alert (choice);
    for($i=0;$i<fill;$i++){
        document.form1.choice[$i].value=document.form1.copy.value;
    }
}

填充(由警报测试)为我提供了表中的行数并且工作正常。选择是我的选择(下拉)框。如果我输入“document.form1.make [$ 1] .value =它会填充我在make列的每一行输入的内容。如果我在选择框中选择make,则选择确实如我的测试提示所示。 / p>

如何在for循环中正确使用变量?

2 个答案:

答案 0 :(得分:3)

如果我理解正确,您正在寻找的语法是:

document.form1[choice][$i].value=document.form1.copy.value;

一般来说,要访问对象obj的属性“prop1”,您可以使用两种语法:

obj.prop1
// or
obj["prop1"]

使用方括号语法,您可以使用任何表达式,只要它的计算结果为您想要的属性名称的字符串,所以:

var x = "prop1";
obj[x]
// or
var x = "pr", y = "op1";
obj[x + y]

...都将访问与obj.prop1相同的属性。

另请注意,您应使用choice关键字声明$ivar变量(如我的示例所示),否则它们将成为全局变量。

答案 1 :(得分:0)

function testScript(fill) {
    choice=document.form1.column.value+'[]';
    for($i=0;$i<fill;$i++){
        document.form1.elements[choice][$i].value=document.form1.copy.value;
    }
}

更新

在此处查看示例: jsfiddle link