JavaScript IE焦点设置超时不使用复选框

JavaScript IE焦点设置超时不使用复选框,javascript,internet-explorer,focus,Javascript,Internet Explorer,Focus,我正试图通过setTimeout解决方案解决已知的“JavaScript focus()在IE中不工作”问题。但是,当从复选框的onchange事件处理程序调用的函数中调用它时,它不起作用 换言之: <input type="checkbox" id="TheCheckbox" onchange="theCheckboxChanged()" />Check Here function theCheckboxChanged() { setTimeout(func

我正试图通过setTimeout解决方案解决已知的“JavaScript focus()在IE中不工作”问题。但是,当从复选框的onchange事件处理程序调用的函数中调用它时,它不起作用

换言之:

<input type="checkbox" id="TheCheckbox"
       onchange="theCheckboxChanged()" />Check Here

function theCheckboxChanged()
{
    setTimeout(function () { document.getElementById("anotherElement").focus(); }
               , 100);
}
检查这里
函数theCheckboxChanged()
{
setTimeout(函数(){document.getElementById(“anotherElement”).focus();}
, 100);
}
是的,“anotherElement”在调用时就存在——事实上,它的工作原理与Firefox中的一样

如果复选框的格式为:

<input type="checkbox" id="TheCheckbox"
       onchange="theCheckboxChanged()">Check Here</input>
检查这里

输入元素是空标记,它不包含内容。这就是为什么

<input type="checkbox" id="TheCheckbox" onchange="theCheckboxChanged()">Check Here</input>
检查这里
不起作用

你应该使用一个标签

<input type="checkbox" id="TheCheckbox" onchange="theCheckboxChanged()"/><label for="TheCheckbox">Check Here</label>
检查这里
怪癖模式的问题是。将其更改为onclick,它将神奇地开始工作


代码在没有超时的情况下可以很好地聚焦元素

如果您将doctype设置为在IE9中可以工作,则我无法访问以前的版本。该代码在IE9中对我有效:您要关注的元素类型是什么?@ssorallen,您需要在compat模式下运行它。在兼容模式中有一个bug,我下面的答案修复了这个bug。为什么要开发兼容模式?你真的读过答案了吗?OP询问为什么代码不工作,并且它在怪癖模式下不工作。。。JSFIDLE以html5标准模式加载文档,以便在有超时和无超时的情况下工作