如何使用javascript获取元素的自定义属性值

use*_*945 -1 html javascript dom

如何从以下获取名称值?

<select id="product">
    <option name="name1" value="1">one</option>
    <option name="name2" value="2">two</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我尝试了这个(在结尾添加.name..value工作,.name没有)

var select = document.getElementById("product");
select.onchange = function(){
    var selectedString = select.options[select.selectedIndex].name;
    alert(selectedString);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

PSL*_*PSL 5

使用getAttribute因为name不是选项的有效属性(因此在name设置其name属性时没有更新属性的选项元素),因此您无法从name属性中获取它(通过访问elm.name).

var selectedString = this.options[this.selectedIndex].getAttribute('name');
Run Code Online (Sandbox Code Playgroud)

更好的方法是使其成为data-*属性并使用数据集访问它(旧浏览器版本不支持).

<select name="model" id="model">
    <option data-name="name1" value="1">one</option>
    <option data-name="name2" value="2">two</option>
</select>
Run Code Online (Sandbox Code Playgroud)

this.options[this.selectedIndex].dataset.name; //or this.options[this.selectedIndex].getAttribute('data-name')
Run Code Online (Sandbox Code Playgroud)