2011-06-08 130 views
0

我不能得到這個工作:在JavaScript函數動態創建變量

function formvalidation() 
{ 
    var SiteNum= document.getElementsByName("sitesinput")[0].value;   
    var i=1; 
    while (i<=SiteNum) 
    { 
    var SitePhone= document.getElementsByName(site['i'])[0].value; 
    alert(SitePhone); 
    i++; 
    } 
} 

如果我提醒,像這樣:alert('document.getElementsByName(site["'+i+'"])[0].value');它會顯示以下內容:

document.getElementsByName(site["1"])[0].value 
document.getElementsByName(site["2"])[0].value 
document.getElementsByName(site["3"])[0].value 

但我不能讓它去變成一個變量。

感謝您看, B.

回答

0

i刪除引號。使用for循環,因爲它適合用例優於while循環。

function formvalidation() 
{ 
    var SiteNum= document.getElementsByName("sitesinput")[0].value, 
     SitePhone; 

    for(var i=1; i<=SiteNum; i++) 
    { 
     SitePhone = document.getElementsByName(site[i])[0].value; 
     alert(SitePhone); 
    } 
} 

此外,JavaScript沒有塊級別範圍,只有功能級別。

我喜歡這樣的解決方案,但是它不會不帶引號(「)工作,即,如果盡相同,但把名字中的自己,像(」網站[1]「) - 它會工作

我看到你現在領導。

SitePhone = document.getElementsByName('site[' + i + ']')[0].value; 
+0

我喜歡這樣的解決方案,但是它不會不帶引號(「)工作,即,如果盡相同,但把名字中的自己,像(「site [1]」) - 它會起作用。有任何想法嗎。 – Bifterss 2011-06-08 14:16:26

+0

哦,所以'site'不是一個包含名字的數組?看我的編輯。 – 2011-06-08 14:17:43

+0

Bingo Bango - 那是孩子 - 非常感謝! – Bifterss 2011-06-08 14:26:58

1

嘗試更換線

var SitePhone= document.getElementsByName(site['i'])[0].value; 

var SitePhone= document.getElementsByName(site[i])[0].value; 
0

你把引號將我行

var SiteNum = document.getElementsByName(site['i'])[0].value 

正在尋找由字符串'i'而不是變量i的值所鍵入的元素。嘗試刪除引號。

0

嘗試

alert(document.getElementsByName(site[i])[0].value);