2013-08-02 23 views
2

我還沒有在任何地方發現這個問題,所以我在這裏發佈它。使用javascript獲取選擇標記的名稱

我有一堆使用VBScript部分命名的選擇標記。我希望能夠獲得從javascript中的onchange事件調用的選擇標記的名稱。

這裏是代碼。

<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與多家

我想知道如果我能得到被稱爲選擇標記的每名前綴?防爆。 optWeeks_1,optWeeks_2等

回答

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> 
+0

我得到的錯誤'名稱是空或不是一個對象' - 意思是element.name爲空 – codingNightmares

+0

我不:http://jsbin.com/omokev/ 1 /編輯 – Quentin

+0

我沒有90年代風格的代碼:http:// jsbin。com/omokev/2 /編輯 – Quentin

2

更改呼叫:

... onchange="changeWeek(this);"> 

那麼你可以簡單;

function changeWeek(caller) { 
    var chosenoption = caller.name; 
} 
+0

鍵入它比我更快。 :) – talemyn

+0

我得到的錯誤,caller.name爲空 – codingNightmares

0

或者你可以使用:

onchange="changeWeek(this.name)" 

或者:(記住,該changeWeek功能必須已經被定義)

<script> 
     var select = document.getElementById('name'); 
     select.onchange = changeWeek; 
    </script> 

addEventListener vs onclick - 信息之間加入事件監聽器和我上面提供的方法。

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/

相關問題