带有可变字段名称的JavaScript表单值

时间:2013-05-30 12:06:10

标签: javascript

简单的javascript但似乎无法让它工作。

var number = 5;
var netiteration = "net"+number;  // makes netiteration now equal net5

var formvalue = document.forms.myformname.netiteration.value;

为什么不以“myformname”的形式获取名称/ id为“net5”的表单字段的值?

另外,我正在使用一本10年前的javascript书,所以语法可能已经改变了吗?

感谢

3 个答案:

答案 0 :(得分:6)

尝试:

var number = 5;
var netiteration = "net"+number;  // makes netiteration now equal net5

var formvalue = document.forms.myformname[netiteration].value;

您的原始代码正在寻找名为“netiteration”的字段,但您希望名称等于netiteration评估值的字段。

答案 1 :(得分:0)

这不起作用,因为netiteration是一个变量,你不能在HTML的DOM结构中使用变量名。

像下面这样的东西应该起作用....

var form_elements = document.forms.myformname.getAllChildren();
var net_elements = new Array[10];
for(var i=0;i<form_elements.length;i++)
{
   var name = form_elements[i].name;
   if(name.indexOf('net') != -1)
    net_elements[i] = form_elements[i];
}

现在,arraynet_elements包含名为'net'的所有元素......

希望这能解决你的问题...

答案 2 :(得分:0)

遇到这种情况并认为我会用一些额外的信息来增强它,以防有人发现它有用。

如果您在表单字段中使用id,则也可以引用该方式:

<input type='text' id='myfield1' onclick="Example(1)">
<input type='text' id='myfield2' onclick="Example(2)">

然后在您的Javascript中,您使用变量引用该字段:

function Example(myvar){
    var myvalue=document.getElementById('myfield'+myvar);   
    console.log('The value is '+myvalue);
}