Javascript:事件处理程序不';t在选择选项(IE)中工作

Javascript:事件处理程序不';t在选择选项(IE)中工作,javascript,internet-explorer,event-handling,html-select,Javascript,Internet Explorer,Event Handling,Html Select,当我在选择选项中绑定事件处理程序时,该事件处理程序调用的函数在Internet Explorer中不起作用(在Chrome、Firefox和Safari中工作得非常好) 下面是代码,非常简单: <select onmousedown="display_options(this, 10);"> <option value="1">1</option> <option value="2">2</option> <

当我在选择选项中绑定事件处理程序时,该事件处理程序调用的函数在Internet Explorer中不起作用(在Chrome、Firefox和Safari中工作得非常好)

下面是代码,非常简单:

<select onmousedown="display_options(this, 10);">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
</select>

<script type="text/javascript">

function display_options(this_select, size)
{   

    /*If the select size is greater than size parameter, apply size parameter to the select :*/
    if(this_select.length > size)
    {
        this_select.size = size;

        /*Position absolute to simulate a classic select :*/
        this_select.style.position = "absolute";
    }

    /*When clicking in an option, come back to size 0 for the select. Works perfectly in Chrome, Firefox, Safari, but doesn't work in IE :*/
    for(var i = 0; i < this_select.options.length; i++)
    {           
            this_select.options[i].onclick = function(event)
            {
                this_select.size = 0;
            };          
    }

    /*When clicking outside the select, come back to size 0 for the select :*/
    this_select.onblur = function()
    {
        this_select.size = 0;
    };
}

1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
功能显示选项(此选项,大小)
{   
/*如果“选择大小”大于“大小”参数,请将“大小”参数应用于“选择:*/
如果(此选项选择长度>大小)
{
此_select.size=大小;
/*定位“绝对”以模拟经典选择:*/
此_select.style.position=“绝对”;
}
/*当点击某个选项时,返回到选择的大小0。在Chrome、Firefox、Safari中运行良好,但在IE中不起作用:*/
对于(var i=0;i
在这段代码中,这是
this\u select.options[i].onclick=function(event){…}
在IE中不起作用,因为选项列表的大小没有恢复到0

你有主意吗?您可以尝试以下代码:


提前衷心感谢您

我猜Internet Explorer又在做一些奇怪的事情了。但是为什么要使用onmousedown和onclick呢?如果您没有使用它们的具体原因,我建议使用onChange属性。有关更多信息,请参阅。

在这方面应该有很多重复,onclick对IE中的选项不起作用。在select上使用change。当select大小大于1时,如果所选选项与上一个所选选项相同,则select标记中的onchange不起作用。如果在select上单击add而不是onmouse,则在select上单击click更糟糕,因为它不适用于所有浏览器(选择大小不返回0)。我不使用onchange,因为当选择大小大于1时,如果选择的选项与先前选择的选项相同,则选择标记中的onchange不会执行该函数。当您单击与上一个选定选项相同的选项时,我希望选择返回到大小0。