select onchange 获取选项名称属性值

Pra*_*kal 1 javascript dom

我有一个 html 页面:

function getName(val)
{
  alert(val.value);
  alert(val.getAttribute('name'));
}
Run Code Online (Sandbox Code Playgroud)
<select onchange="getName(this)">
  <option name="1" value="data1">Data 1</option>
  <option name="2" value="data2">Data 2</option>
  <option name="3" value="data3">Data 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我想要那个选项namevalue数据。它value按预期返回数据,但它返回name数据为null.

我应该怎么办?

任何帮助表示赞赏。谢谢

brk*_*brk 7

在函数中,getName参数 select指的是select元素,而不是选定的option。用于selectedIndex获取所选内容option然后使用getAttribute

function getName(select) {
  // You can get the value like you did 
  var value = select.value;
  console.log(value);

  // And here we get the name
  var selectedOption = select.options[select.selectedIndex];
  var name = selectedOption.getAttribute('name');
  console.log(name);
}
Run Code Online (Sandbox Code Playgroud)
<select onchange="getName(this)">
  <option name="1" value="data1">Data 1</option>
  <option name="2" value="data2">Data 2</option>
  <option name="3" value="data3">Data 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

您还可以执行以下操作(这更清楚)

function getName(select) {
  var selectedOption = select.options[select.selectedIndex];
  var value = selectedOption.getAttribute('value');
  var name = selectedOption.getAttribute('name');
  console.log(value, name);
}
Run Code Online (Sandbox Code Playgroud)