我有一些简单的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,它现在似乎正常工作。很奇怪。有人知道为什么会这样吗?
答案 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