0

我知道如何在 jQuery 中做到这一点,但是如何在 Javascript 中做到这一点?

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

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

4

3 回答 3

2

将其更改为

document.getElementById(TopMenuID).getElementsByTagName('a')[0]
于 2012-08-14T19:59:14.103 回答
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");
} 
于 2012-08-14T20:09:57.180 回答
0

尝试

document.getElementById(TopMenuID).getElementsByTagName('a')[0]
于 2012-08-14T19:59:55.837 回答