1. 程式人生 > >下拉列表如何獲取選中option的值

下拉列表如何獲取選中option的值

對於無序列表ul,我們可以早ul元素上註冊click事件,通過event.target來獲取到當前點選的列表項,示例程式碼如下:

<!--html程式碼部分-->
<ul id='list'>
	<li>1</li>
	<li>2</li>
	<li>3</li>
</ul>
//js程式碼部分
var myList = document.getElementById('list');

myList.onclick = function (event) {	
	console.log(event.
target); }

那麼對於select下拉列表可不可以用同樣的方式來獲取選中的option呢?答案是不可以的,不信你可以試一下。那有什麼其他的解決辦法嘛?是的,別急。首先,我們知道select上可以繫結change事件,該事件在切換不同的option時會觸發,但是訪問當前event物件的target時,卻得不到我們想要的結果,但是我們可以通過mySelect.options[mySelect.selectedIndex]來獲取當前選中的元素,將其與change事件結合使用,就可以獲得選中option的值啦,下面是程式碼示例:

<!--html程式碼部分-->
<select
id='sel'>
<option value='a'>1</option> <option value='b'>2</option> <option value='c'>3</option> </select>
//js程式碼部分
  var mySelect = document.getElementById('sel');    
          
  mySelect.onchange = function () {                
  console.log('當前選中的選項的value值:'
+ mySelect.options[mySelect.selectedIndex].value); console.log('當前選中的選項的text值:' + mySelect.options[mySelect.selectedIndex].innerText); }

這樣就可以順利獲取到選中option的值啦,不過這個寫法還是有一個小bug,當你首次開啟頁面,並在下拉選單中選中第一項時,是沒有任何反應的,因為select列表預設第一個option就是選中狀態,因此再次選中它,並不會觸發change事件,大家有更好的辦法可以評論,交流