如何在Javascript中使用变量动态构造文档元素字符串?

时间:2011-03-03 09:08:14

标签: javascript string variables syntax document

这让我疯了,我相信这既可能也很容易做到。

我有一个页面,上面有一大堆动态创建的表单。在我的一个函数中,我需要访问其中一个表单,所以我在变量中传递表单的名称。

然后我需要使用文档树访问该表单的名称。

但是,当我输入变量时,它假定变量的名称是表单的名称。

所以这不起作用:

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 个答案:

答案 0 :(得分:1)

在表单对象中查找它们 - 这不起作用,因为它是一个数组而不是一个对象。

使用document.getElementsByName

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

甚至更好,在表单上设置id attribuite并使用document.getElementById查找表单

答案 1 :(得分:0)

尝试使用document.getElementById(nameOfForm)(如果您在表单上也有ID)...

如果您可以在页面中包含jQuery引用,则可以轻松执行以下操作(再次假设您在表单上有ID):

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

答案 2 :(得分:-1)

function focusElement(formName,elemName){
    var elem = document.forms [formName] .elements [elemName];
}
试试这个 formname是表单的名称,elemname是输入标签名称