0

代码:
https :
//dl.dropboxusercontent.com/u/16952797/webdev/uppg1/kontakt.html http://jsfiddle.net/v8uMJ/(结果框没有成功渲染页面或重现bug)

相关代码:

function addEvent(element, eventType, theFunction, capture)
{
    if(element.addEventListener)
    {
        element.addEventListener(eventType, theFunction, capture);
    } 
    else if(element.attachEvent)
    {
       element.attachEvent( "on" + eventType, theFunction);
    }
}

function removeDefaultOption(event)
{
    document.getElementById("selectSuggestion").options[0].style.display = "none";      // <-- looks awkward
    //document.getElementById("selectSuggestion").remove(0);                                            // <-- also looks awkward and needs boundaries so that all options don't get removed after each click
    //delay(1000);                                                                                                                  // <-- tried delaying the thread but it didn't work..
    //setInterval(function(){},1000);                                                                                   // <-- tried delaying the thread but it didn't work..
}

function addEventListeners()
{
...
    addEvent(document.getElementById("selectSuggestion"), "click", removeDefaultOption, false);
}

上下文:所以我想要做的是每当您单击建议表单中的选择元素(瑞典:Förslag)时,我希望第一个选项(值:--Välj Förslag--)从列表中消失。问题是选项显示“太快”所以我要么需要a)在设置第一个选项的style.display之后延迟选项的显示,要么b)我需要防止点击选择的默认事件和然后用我自己的函数覆盖它,这样我就可以控制它应该何时运行(我不知道单击选择元素时运行的本机函数的名称)。

4

2 回答 2

1

使用“焦点”事件而不是“点击”事件。这会在焦点处于焦点时直接触发函数,而不是“等待”完成点击。

清理 JS 小提琴:http: //jsfiddle.net/vhS3p/1/

document.getElementById("selectSuggestion").addEventListener("focus", removeDefaultOption, false);
于 2013-11-07T16:43:23.393 回答
-1

尝试像这样删除您想要的选项:

var index = 0;
var select =  document.getElementById("selectSuggestion");
select.removeChild(select[index]);
于 2013-11-07T14:20:28.080 回答