在JavaScript函数中动态创建变量

Dynamically create variable in JavaScript function

本文关键字:创建 变量 动态 JavaScript 函数      更新时间:2023-09-26

我无法让它工作:

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.

尝试替换行

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

对于

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

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;  

在行的i周围加引号

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

它正在查找由字符串"i"而不是变量i的值键控的元素。请尝试删除引号。

尝试

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