2

简单的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 书,所以语法可能已经改变了?

谢谢

4

3 回答 3

6

尝试:

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

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

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

于 2013-05-30T12:07:49.957 回答
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”的元素......

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

于 2013-05-30T12:12:28.583 回答
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);
}
于 2017-05-11T09:59:33.650 回答