Динамически создать переменную в функции JavaScript - PullRequest
0 голосов
/ 08 июня 2011

Я не могу заставить это работать:

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 ]

1 голос
/ 08 июня 2011

Попробуйте заменить строку

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

на

var SitePhone= document.getElementsByName(site[i])[0].value;
0 голосов
/ 08 июня 2011

Удалить кавычки из 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;  
0 голосов
/ 08 июня 2011

Попробуйте

 alert(document.getElementsByName(site[i])[0].value);
0 голосов
/ 08 июня 2011

Вы помещаете кавычки вокруг i в строке

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

, которая ищет элемент, обозначенный строкой 'i' вместо значения переменной i.Попробуйте удалить цитаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...