0

jQueryでこれを行う方法は知っていますが、Javascriptで行う方法は?

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

上記の if ステートメントが機能していません。その理由はよくわかりません。何も警告されていません。TopMenuID というナビゲーション バーがあり、その中のタグの 1 つにフォーカスがある場合、左キーが押されたときに LEFT を警告したいと考えています。私は何を間違っていますか?

4

3 に答える 3

2

に変更します

document.getElementById(TopMenuID).getElementsByTagName('a')[0]
于 2012-08-14T19:59:14.103 に答える
1

getElementsByTagName('a')配列を返しますが、それを比較しているactiveElementため、2つが等しくなることはありません。

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 に答える