在JavaScript函数中动态创建变量

时间:2011-06-08 13:49:35

标签: javascript variables

我无法让这个工作:

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

但我不能让它进入变量。

感谢您的关注, 乙

4 个答案:

答案 0 :(得分:1)

尝试替换

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

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

答案 1 :(得分:0)

你在i行周围加上引号

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

正在查找由字符串'i'键入的元素,而不是变量i的值。尝试删除引号。

答案 2 :(得分:0)

尝试

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

答案 3 :(得分: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没有块级范围,只有函数级。

  

我喜欢这个解决方案,但是如果没有引号(“)它就不会工作,即如果一切都一样,但把名字放在我自己身上,就像(”site [1]“) - 它会起作用。

我知道你现在要去哪里了。

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