遍历DOM以查找哪个元素具有焦点

时间:2012-08-14 19:57:03

标签: javascript traversal

我知道如何在jQuery中执行此操作,但如何在Javascript中执行此操作?

    if ((evt.which == arrLeftKey || evt.keyCode == arrLeftKey) && document.getElementById(TopMenuID).getElementsByTagName('a') === document.activeElement) {
                alert("LEFT");
} 

以上if语句不起作用,我不确定为什么。什么都没有被警告。我有一个名为TopMenuID的导航栏,如果其中一个标签有焦点,我想在按下左键时提醒LEFT。我做错了什么?

3 个答案:

答案 0 :(得分:2)

将其更改为

document.getElementById(TopMenuID).getElementsByTagName('a')[0]

答案 1 :(得分:1)

getElementsByTagName('a')返回一个数组,但是你将它与activeElement进行比较,因此两者永远不会相等。

如果你想知道activeElement是否在你的菜单中,那么你可以查找activeElement的父链,看看你是否遇到了TopMenuID元素。

function doesContain(item, parent) {
    var obj = item.parentNode;
    while (obj && obj !== document.documentElement && obj.nodeType !== 11) {
        if (obj === parent) {
            return(true);
        }
        obj = obj.parentNode;
    }
    return(false);
}

if ((evt.which == arrLeftKey || evt.keyCode == arrLeftKey) && doesContain(document.activeElement, document.getElementById(TopMenuID) {
    alert("LEFT");
} 

答案 2 :(得分:0)

尝试

document.getElementById(TopMenuID).getElementsByTagName('a')[0]
相关问题