Как я могу динамически создать строку элемента документа, используя переменную в Javascript? - PullRequest
0 голосов
/ 03 марта 2011

Это сводит меня с ума, и я уверен, что это возможно и, конечно, просто.

У меня есть страница с целой кучей динамически создаваемых форм. В одной из моих функций мне нужен доступ к одной из этих форм, поэтому я передаю имя формы в переменной.

Затем мне нужно получить доступ к имени этой формы, используя дерево документов.

Однако, когда я добавляю переменную, предполагается, что имя переменной - это имя формы.

Так что это не работает:

function myAwesomeFunction(nameOfForm)
{
 var selection = document.nameOfForm.nameOfInput.selectedIndex;
}

Итак, я осмотрел сеть и увидел, что мне нужно использовать скобки, но это тоже не работает:

function myAwesomeFunction(nameOfForm)
{
 var selection = document[nameOfForm].nameOfInput.selectedIndex;
}

Я также пытался с некоторым действием цитаты:

function myAwesomeFunction(nameOfForm)
{
 var selection = document['nameOfForm'].nameOfInput.selectedIndex;
}

... но без радости.

Так, где я иду не так?

Для бонусных баллов ... что делать, если и имя формы, и имя конкретного ввода были динамическими? Тогда что?

function myAwesomeFunction(nameOfForm, nameOfInput)
{
 var selection = document[nameOfForm][nameOfInput].selectedIndex;
}

Ответы [ 3 ]

1 голос
/ 03 марта 2011

Найдите их в объекте форм - это не сработает, так как это массив, а не объект.

использовать document.getElementsByName

function myAwesomeFunction(nameOfForm, nameOfInput)
{
 var selection = document.getElementsByName(nameOfForm)[nameOfInput].selectedIndex;
}

или даже лучше, установите атрибут id в форме и используйте document.getElementById, чтобы найти форму

0 голосов
/ 03 марта 2011

function focusElement (formName, elemName) {
var elem = document.forms [formName] .elements [elemName];
}
try this
formname - это имя формы, а elemname -имя метки ввода

0 голосов
/ 03 марта 2011

Попробуйте использовать document.getElementById(nameOfForm) (если у вас есть идентификатор в форме) ...

Если вы можете добавить ссылку jQuery на свою страницу, вы можете легко сделать следующее (опять-таки при условии, что у вас есть идентификатор в форме):

function myAwesomeFunction(nameOfForm, nameOfInput)
{
  var form = $("form#" + nameOfForm);
  var input = $("#" + nameOfInput + ":input");
  var selection = $(input).val();
}
...