如何从以下获取名称值?
<select id="product">
<option name="name1" value="1">one</option>
<option name="name2" value="2">two</option>
</select>
我试过这个(在结尾添加.name。。value工作,.name没有)
var select = document.getElementById("product");
select.onchange = function(){
var selectedString = select.options[select.selectedIndex].name;
alert(selectedString);
}
感谢
答案 0 :(得分:5)
使用getAttribute
因为name
不是选项的有效属性(因此选项元素没有name
属性,当您设置其name
属性时,该属性会更新),因此你无法从name
属性中获取它(通过访问elm.name
)。
var selectedString = this.options[this.selectedIndex].getAttribute('name');
更好的方法是将其设为data-*
属性并使用dataset访问它(旧浏览器版本不支持)。
<select name="model" id="model">
<option data-name="name1" value="1">one</option>
<option data-name="name2" value="2">two</option>
</select>
和
this.options[this.selectedIndex].dataset.name; //or this.options[this.selectedIndex].getAttribute('data-name')