我有一个html页面:
function getName(val)
{
alert(val.value);
alert(val.getAttribute('name'));
}
<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>
我想要该选项name
和value
的数据。它按预期返回value
数据,但返回name
的{{1}}数据。
我该怎么办?
感谢您的帮助。谢谢
答案 0 :(得分:2)
函数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);
}
<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>
您还可以执行以下操作(更清楚)
function getName(select) {
var selectedOption = select.options[select.selectedIndex];
var value = selectedOption.getAttribute('value');
var name = selectedOption.getAttribute('name');
console.log(value, name);
}
答案 1 :(得分:0)
function getName()
{
alert(event.target.value);
alert(event.target.selectedOptions[0].getAttribute('name'));
}
<select onchange="getName()">
<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>
答案 2 :(得分:0)
我还想提出一个不同的答案,我认为它突出了更好的Web编程实践。
我认为,您不应在HTML中使用类似onchange="getName(**this**)"
之类的东西。您应该通过Javascript将函数附加到select
元素上。
出于演示目的,我们将 id 添加到select
元素中,以便我们可以在DOM中快速找到它。
<select id="mySelect">
<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>
接下来,我们编写Javascript
// When the page is loaded...
document.addEventListener("DOMContentLoaded", function(event) {
// Find your select...
var mySelect = document.getElementById("mySelect");
// Attach the function to the "onChange" event.
mySelect.addEventListener("change", function(event) {
// Retrieve the select element from the event.
var select = event.target;
var selectedOption = select.options[select.selectedIndex];
var value = selectedOption.getAttribute('value');
var name = selectedOption.getAttribute('name');
console.log(value, name);
});
});
这是一种解决问题的更结构化和简洁的方法。
希望您学到了一些新东西!