我知道如何在jQuery中执行此操作,但如何在Javascript中执行此操作?
if ((evt.which == arrLeftKey || evt.keyCode == arrLeftKey) && document.getElementById(TopMenuID).getElementsByTagName('a') === document.activeElement) {
alert("LEFT");
}
以上if语句不起作用,我不确定为什么。什么都没有被警告。我有一个名为TopMenuID的导航栏,如果其中一个标签有焦点,我想在按下左键时提醒LEFT。我做错了什么?
答案 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]