Javascript不是';t执行onclick事件

Javascript不是';t执行onclick事件,javascript,javascript-events,Javascript,Javascript Events,我有一些简单的javascript函数: function focus(id) { var e = document.getElementById(id); if (e != null) { e.focus(); } } function show(id) { var e = document.getElementById(id); if (e != null) { e.style.display = "i

我有一些简单的javascript函数:

function focus(id)
{
    var e = document.getElementById(id);
    if (e != null)
    {
        e.focus();
    }
}

function show(id)
{
    var e = document.getElementById(id);
    if (e != null)
    {
        e.style.display = "inline";
    }
}
然后我有一个带有onclick事件的html标记

<a title="Click This" onclick="focus('some_textbox'); show('some_panel');">Click This</a>
点击这里
当我单击“单击此”链接时,只执行show()方法。出于某种原因,从未调用focus方法。知道为什么会这样吗

我尝试清除缓存,并颠倒了focus()和show()方法的顺序。我还验证了所有内容的拼写是否正确

是因为focus()已经是javascript中的一个函数了吗

编辑:我试着将函数重命名为focus2,现在似乎可以工作了。很奇怪。有人知道为什么会发生这种情况吗?

它可能正在调用“focus”方法,但现在发生的是,
标记的默认操作正在将其偷回来。试试这个:

function focus(id)
{
    var e = document.getElementById(id);
    if (e != null)
    {
       setTimeout(function() { e.focus(); }, 1);
    }
}

通过在单独的事件循环中运行对“focus”的调用,您可以确保您的元素在“click”处理完成后获得焦点。

这里似乎存在重命名问题

只需将函数
focus
重命名为
focusX
或其他不同的名称,这在我的测试用例中适用


记得在href中更新对
focus
的调用,对
focusX

的调用,如果执行了
show
,那么,
focus
也是,可能你看不到效果,可能不是你定义的函数,但它已经执行了。尝试重命名函数
focus
,看看是否有works@FelixKling:它没有被执行。谢谢你完全忽略了我的帖子。@HBellamy:在我发布帖子后不久,我试着将其重命名为focus2,似乎效果不错。非常奇怪。
show
focus
之后调用。你认为被解释的人只是跳过了一句话吗?如果
focus
将抛出错误或不存在,
show
将不会执行。编辑:关于你的最后一条评论,这意味着你调用的
focus
函数不是你定义的函数(这实际上就是我的意思)。某些引擎不允许您覆盖某些全局属性。计时器过期时将标记为正确。有没有新名字的想法;强调,捕捉光标?我想不出一个好的。