这可能是一个非常简单的问题,但我似乎无法做到这一点。
是否可以从FORM中提取变量“name”?我有以下下拉菜单(简体)......
<FORM NAME="doc_select">
<SELECT ID="rec_list" NAME="rec_info"><OPTION>...</OPTION></SELECT>
<SELECT ID="term_list" NAME="term_info"><OPTION>...</OPTION></SELECT>
<SELECT ID="comp_list" NAME="comp_info"><OPTION>...</OPTION></SELECT>
</FORM>
这些都通过“onChange”语句触发了一些java脚本。到目前为止一切都很好。
我想提取名称,而不是值,然后使用提取的名称 像下面这样的java脚本语句:
var info = form.*name*.value;
getElementsByName
给我的价值不是名字。
有什么想法吗?
干杯 弗兰克
答案 0 :(得分:1)
也许这段代码可以帮到你。 Check out a demo of this here.
form = document.doc_select;
document.getElementById('rec_list').onchange = function() {
n = this.name;
var info = form.elements[n].value;
console.log('name: ' + n); //name: rec_info
console.log('info: ' + info); //info: 2
};
使用.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...
}
每个<select>
元素不再需要3个不同的函数。 :) Check it out here.
答案 1 :(得分:0)
当您使用getElementsByName时,您只需要询问具有该name属性的HTMLElement。你需要的是从HTMLElement获取属性“name”。如果你能够使用jQuery,你可以使用jQuery .attr()函数。
编辑:查看此StackOverflow问题Get elements by attribute when querySelectorAll is not available without using libraries?
答案 2 :(得分:0)
试试这个...... ` var rec_list = document.querySelector(“#rec_list”);
警报(rec_list.name); `
答案 3 :(得分:0)
我不清楚你的问题是什么,所以这里有一些一般的东西。要获取调用侦听器的元素的名称,请传递this
:
<select id="rec_list" name="rec_info" onchange="someFn(this)" ... >
您可以使用动态添加的侦听器执行相同操作。在函数中:
function someFn(element) {
var elementName = element.name;
var theForm = element.form;
var theValue = element.value;
// and so on ...
}
您还可以使用其名称访问表单控件作为表单的属性,因此一旦您引用了表单:
form.comp_info
是OP中的第三个选择元素。请注意,在此特定情况下,如果有一个具有该名称的控件,则返回对该元素的引用。如果有多个具有相同名称的控件,则返回一个集合。另请注意,IE会混淆name和id标记,因此永远不要对一个控件的名称和另一个控件的id使用相同的值。
getElementsByName
方法返回一个集合,成员可以通过索引访问,所以第一个是:
var someElement = document.getElementsByName('foo')[0];
请注意,如果没有名称为“foo”的元素,则someElement
的值为undefined
。