2011-06-08 128 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);