如何从 Javascript 获取 optgroup 值?

Pri*_*lip 8 javascript

<html>
<body>

<select name="lstparameters">
  <optgroup value="100" label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup value="101" label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>
 
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如何从 javascript 获取 optgroup 值?我想获取 100 和 101 值。

Mar*_*ese 9

对于像我这样想要获得 的人optgroup labelselected option请执行以下操作:

document.querySelector('select[name="lstparameters"] option:checked').parentElement.label
Run Code Online (Sandbox Code Playgroud)

使用 aselect和 anid可以简化选择器:

document.querySelector('#lstparameters option:checked').parentElement.label
Run Code Online (Sandbox Code Playgroud)


Aru*_*hny 6

您可以获取 optgroup 元素并读取value属性

var values = Array.from(document.querySelectorAll('select[name="lstparameters"] > optgroup')).map(el => el.getAttribute('value'));

alert(values);

//if you want old browser support
var values = [].slice.call(document.querySelectorAll('select[name="lstparameters"] > optgroup')).map(function(el) {
  return el.getAttribute('value')
});
alert(values);
Run Code Online (Sandbox Code Playgroud)
<select name="lstparameters">
  <optgroup value="100" label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup value="101" label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)


Pug*_*azh 0

您可以使用该.closest()功能来确定所选的optgroup

$(function() {
  var selected = $('select option:selected');
  alert(selected.closest('optgroup').attr('value'));
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<body>

  <select name="lstparameters">
    <optgroup value="100" label="Swedish Cars">
      <option value="volvo">Volvo</option>
      <option value="saab" selected>Saab</option>
    </optgroup>
    <optgroup value="101" label="German Cars">
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </optgroup>
  </select>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)

  • 这就是 jQuery,OP 没有要求 Jquery 解决方案。添加整个库只是为了读取单个属性是巨大的杀伤力 (3认同)