Javascript onclick Select的选项标记即使不单击选项也会死机触发

Javascript onclick Select的选项标记即使不单击选项也会死机触发,javascript,jquery,html,dom,dom-events,Javascript,Jquery,Html,Dom,Dom Events,我有这样一个代码: 1. 2. 1. 当用户单击“选择”时,会触发一个选项onclick事件。 我真的不知道该怎么办。 这是我的工作代码,请参见问题检查选择标记: 我想你想要的是一场变革 试试这个: <select id='chapter' onChange="SelectOption(this)"> <option value='1'>1</option> <option value='2'>2</option>

我有这样一个代码:

1. 2. 1. 当用户单击“选择”时,会触发一个选项onclick事件。 我真的不知道该怎么办。 这是我的工作代码,请参见问题检查选择标记:


我想你想要的是一场变革

试试这个:

<select id='chapter' onChange="SelectOption(this)">
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>1</option>
</select>

function SelectOption(sel) {
    var selectedValue = sel.value;
    // Do something with selectedValue here, e.g. call function1 if value 1 is selected
}

正如mayabelle所说,使用onchange事件。然而,我不喜欢内联JS。这是一种糟糕的做法,而且很丑陋。使用MVC方法分离代码,使用addEventListener附加事件,函数可以预定义,可以匿名

<select id='chapter'>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>1</option>
</select>

var x = document.getElementById("chapter");
x.addEventListener("change",function() {
    var value = my_function(this.options[this.selectedIndex].value);
),false);

我认为你不能把oncllick事件放在option标签上。这很有意义,因为你有3个选项,当用户点击select时,3个选项中的一个会被点击。有更好的方法来处理这个问题,我相信jquery的答案会很快出现,最好是在页面上的单击或更改事件中返回所选选项的索引select@RUJordan只要行得通,我就去guess@Curiosity将HTML标记视图与JS功能控制器分离这就是字面上的定义MVC的一部分。MVC模型-视图-控制器是一种体系结构设计模式,通过分离关注点鼓励改进应用程序组织。