Javascript 返回HTML表单变量名(非值)

Javascript 返回HTML表单变量名(非值),javascript,getelementsbyname,Javascript,Getelementsbyname,这可能是一个非常简单的问题,但我似乎无法正确回答 是否可以从表单中提取变量“name”?我有以下下拉菜单(简化) getElementsByName给我的是值而不是名称 有什么想法吗 干杯 Frank当您使用getElementsByName时,您只需请求具有该name属性的HTMLElement。您需要的是从HtmleElement获取属性“name”。如果能够使用jQuery,则可以使用jQuery.attr()函数 编辑:查看这个StackOverflow问题当您使用getElements

这可能是一个非常简单的问题,但我似乎无法正确回答

是否可以从表单中提取变量“name”?我有以下下拉菜单(简化)

getElementsByName
给我的是值而不是名称

有什么想法吗

干杯
Frank

当您使用getElementsByName时,您只需请求具有该name属性的HTMLElement。您需要的是从HtmleElement获取属性“name”。如果能够使用jQuery,则可以使用jQuery.attr()函数


编辑:查看这个StackOverflow问题

当您使用getElementsByName时,您只需要请求具有该name属性的HTMLElement。您需要的是从HtmleElement获取属性“name”。如果能够使用jQuery,则可以使用jQuery.attr()函数

编辑:查看此StackOverflow问题

尝试此。。。 ` var rec_list=document.querySelector(“rec#u list”)

警报(记录列表名称); `试试这个。。。 ` var rec_list=document.querySelector(“rec#u list”)

警报(记录列表名称);
`我不清楚你的问题是什么,所以这里有一些一般性的东西。要获取调用侦听器的元素的名称,请传递
this

<select id="rec_list"  name="rec_info" onchange="someFn(this)" ... >
您还可以使用表单控件的名称作为表单的属性访问表单控件,因此,一旦您有了对表单的引用:

form.comp_info
是OP中的第三个select元素。请注意,在这种特殊情况下,如果有一个控件具有该名称,则返回对该元素的引用。如果有多个控件具有相同的名称,则返回集合。还请注意,IE会混淆名称和id标记,因此切勿对一个控件的名称和另一个控件的id使用相同的值

该方法返回一个集合,成员可以通过索引访问,因此第一个集合是:

var someElement = document.getElementsByName('foo')[0];

请注意,如果没有名为“foo”的元素,则
someElement
的值将为
未定义的

我不清楚您的问题是什么,因此这里有一些一般性的内容。要获取调用侦听器的元素的名称,请传递
this

<select id="rec_list"  name="rec_info" onchange="someFn(this)" ... >
您还可以使用表单控件的名称作为表单的属性访问表单控件,因此,一旦您有了对表单的引用:

form.comp_info
是OP中的第三个select元素。请注意,在这种特殊情况下,如果有一个控件具有该名称,则返回对该元素的引用。如果有多个控件具有相同的名称,则返回集合。还请注意,IE会混淆名称和id标记,因此切勿对一个控件的名称和另一个控件的id使用相同的值

该方法返回一个集合,成员可以通过索引访问,因此第一个集合是:

var someElement = document.getElementsByName('foo')[0];

请注意,如果没有名为“foo”的元素,则
someElement
的值将为
undefined

可能此代码会对您有所帮助

您可以使用
.name
获取元素的名称。
elements[]
函数根据名称或索引返回元素。例如,
elements[0]
也会给出相同的结果,但由于您不知道索引,因此对您没有好处。
更新

在阅读了你关于只管理一个脚本的评论之后,我想我已经理解了你的问题。只需对代码进行一些小的调整,这应该是您想要的:

form = document.doc_select;

document.getElementById('rec_list').onchange = function() {
    onChangeFunction(this.name);
};
document.getElementById('term_list').onchange = function() {
    onChangeFunction(this.name);
};
document.getElementById('comp_list').onchange = function() {
    onChangeFunction(this.name);
};

function onChangeFunction(name){
    //...your code goes here...

    var info = form.elements[name].value;
    console.log('name: ' + name);         //outputs name of element that changed
    console.log('info: ' + info);         //outputs value for that element

    //...more of your code...
}
每个
元素不再需要3个不同的函数:

也许这段代码会对你有所帮助

您可以使用
.name
获取元素的名称。
elements[]
函数根据名称或索引返回元素。例如,
elements[0]
也会给出相同的结果,但由于您不知道索引,因此对您没有好处。
更新

在阅读了你关于只管理一个脚本的评论之后,我想我已经理解了你的问题。只需对代码进行一些小的调整,这应该是您想要的:

form = document.doc_select;

document.getElementById('rec_list').onchange = function() {
    onChangeFunction(this.name);
};
document.getElementById('term_list').onchange = function() {
    onChangeFunction(this.name);
};
document.getElementById('comp_list').onchange = function() {
    onChangeFunction(this.name);
};

function onChangeFunction(name){
    //...your code goes here...

    var info = form.elements[name].value;
    console.log('name: ' + name);         //outputs name of element that changed
    console.log('info: ' + info);         //outputs value for that element

    //...more of your code...
}
每个
元素不再需要3个不同的函数:

如果您已经知道元素的名称,请使用
getElementsByName
,这里您似乎不知道。也许您需要
getElementsByTagName
然后对它们进行迭代?我不太确定您想要实现什么。您是否正在尝试获取已更改的select的名称?如果可以,请让我澄清。我有一点javascript,它显示从各种下拉菜单中选择的任何文档的简要摘要。目前我有这个脚本的多个副本来处理每个下拉列表,因为它们都有不同的名称。不同的名称只影响脚本的一行,因此,如果我可以提取该名称值,我可以在该行中使用它,因此只维护脚本的一个副本。如果您已经知道元素的名称,则使用
getElementsByName
,而在这里您似乎不知道。也许您需要
getElementsByTagName
然后对它们进行迭代?我不太确定您想要实现什么。您是否正在尝试获取已更改的select的名称?如果可以,请让我澄清。我有一点javascript,它显示从各种下拉菜单中选择的任何文档的简要摘要。目前我有这个脚本的多个副本来处理每个下拉列表,因为它们都有不同的名称。不同的名称只影响脚本的一行,因此,如果我可以提取该名称值,我可以在该行中使用它,因此只维护脚本的一个副本,我只是传递变量并使用var elementName=element.name;虽然我的变量是call“infoName”。还有一个问题,现在我有了这个值,我如何将它细分到表单语句中?var info=形式+信息名+值;道歉是一件很简单的事,只是可以;这最后一件事不会发生方括号符号会计算