下拉列表如何獲取選中option的值
阿新 • • 發佈:2018-12-12
對於無序列表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事件,大家有更好的辦法可以評論,交流