2013-05-30 21 views
2

簡單的javascript,但似乎無法使其工作。帶有可變字段名稱的JavaScript表單值

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

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

爲什麼不以名稱/編號爲「net5」的形式字段的值,格式爲「myformname」?

另外,我正在從一個10歲的JavaScript書籍工作,所以也許語法已經改變?

感謝

+0

你嘗試:

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

然後在你的JavaScript您可以通過引用字段變量'document.getElementsByName(netiteration)[0] .value' – adeneo

回答

7

嘗試:

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

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

你的原代碼尋找一個叫「netiteration」領域,但你想有等於netiteration的評估值的名稱領域。

+0

很好的解釋。 – crush

+0

是的!你的美麗。謝謝! – Lan

0

這將不起作用,因爲網絡變量是一個變量,您不能在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擁有所有與它的名字「淨」的元素...

希望這能解決你的問題..

0

遇到這種情況,我想我會增加一些額外的信息,以防有人發現它有用。

如果你在你的表單字段使用ID,您可以參考這種方式也:

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