Javascript没有执行onclick事件

时间:2011-12-30 22:59:20

标签: 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 = "inline";
    }
}

然后我有一个带有onclick事件的html标记。

<a title="Click This" onclick="focus('some_textbox'); show('some_panel');">Click This</a>

当我点击“Click This”链接时,只执行show()方法。由于某种原因,永远不会调用焦点方法。任何想法为什么会这样?

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

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

编辑:我尝试将该功能重命名为focus2,它现在似乎正常工作。很奇怪。有人知道为什么会这样吗?

2 个答案:

答案 0 :(得分:3)

可能 调用“焦点”方法,但正在发生的事情是<a>标记的默认操作正在窃取它。试试这个:

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

通过在单独的事件循环中运行“焦点”调用,可以确保在完成“点击”处理后元素抓取焦点。

答案 1 :(得分:0)

好像你在这里有重命名问题。

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

请务必将href中对focus的号召更新为focusX