使用javascript获取选择标记的NAME

时间:2013-08-02 15:22:00

标签: html vbscript

我在任何地方都没有找到这个问题所以我在这里发帖。

我有一堆选择标签,部分使用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等。

4 个答案:

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

小提琴:

http://jsfiddle.net/bddwW/