我在任何地方都没有找到这个问题所以我在这里发帖。
我有一堆选择标签,部分使用VBScript命名。我希望能够获得从javascript中的onchange事件调用的select标记的名称。
这是代码。
<select name="optWeeks_<%=intLineCnt%>" id = "name" onchange="changeWeek()">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<SCRIPT LANGUAGE = "JavaScript">
function changeWeek(){
var chosenoption = document.getElementsByTagName("select").name
}
</SCRIPT>
选择名称 - "optWeeks_<%=intLineCnt%>"
是optWeeks,前缀为数字
我想知道我是否可以获取所调用的select标记的每个名称?防爆。 optWeeks_1,optWeeks_2等。
答案 0 :(得分:2)
将通话更改为:
... onchange="changeWeek(this);">
然后你可以简单地说;
function changeWeek(caller) {
var chosenoption = caller.name;
}
答案 1 :(得分:1)
您需要获取元素的引用。 this
将成为事件处理函数中的一个。您可以将其传递给您正在呼叫的功能:
onchange="var element = this; changeWeek(element)">
为了清楚起见,我在上面添加了变量赋值,您不需要它:
onchange="changeWeek(this)">
然后,您可以从该对象的name
属性中获取名称:
function changeWeek(element) {
var name = element.name;
我通常建议使用JS而不是HTML绑定事件处理程序,但不使用HTML 3.2:
<select name="optWeeks_<%=intLineCnt%>" id="name">
<!-- … -->
</select>
<script>
var select = document.getElementById('name');
select.addEventListener('change', changeWeek);
function changeWeek(evt) {
var name = this.name;
}
</script>
答案 2 :(得分:0)
或者您可以使用:
onchange="changeWeek(this.name)"
或者:(请记住,必须已经定义了changeWeek功能)
<script>
var select = document.getElementById('name');
select.onchange = changeWeek;
</script>
addEventListener vs onclick - 有关添加事件侦听器和上面提供的方法之间的信息。
答案 3 :(得分:0)
另一种JavaScript方式:
var selects = document.getElementsByTagName('select');
for(var i in selects)
{
selects[i].onchange = function changeWeek(e) {console.log(e.target.name);}
}
HTML:
<select name="test">
<option>One</option>
<option>Two</option>
</select>
<select name="test2">
<option>One</option>
<option>Two</option>
</select>
小提琴: