提问者:小点点

我如何检查我的元素ID是否有焦点?[副本]


假设我有以下div,它在满足某个条件后获得焦点:

<div id="myID" tabindex="-1" >Some Text</div>

我想创建一个处理程序,检查该div是否有焦点,当它的计算结果为true/focus在div上时,执行一些操作(在下面的示例中,打印一个控制台日志):

if (document.getElementById('#myID').hasFocus()) {
            $(document).keydown(function(event) {
                if (event.which === 40) {
                    console.log('keydown pressed')
                }
            });
        }

我在控制台中收到一条错误消息,该消息显示:

TypeError:无法读取属性“Has Focus”为null

知道我做错了什么吗?也许就像我传递div ID的方式?


共2个答案

匿名用户

document.activeelement与要检查焦点的元素进行比较。如果它们相同,则元素被聚焦;否则就不是了。

// dummy element
var dummyEl = document.getElementById('myID');

// check for focus
var isFocused = (document.activeElement === dummyEl);

HasFocus文档的一部分;对于DOM元素没有这样的方法。

而且,document.getElementByIdmyid的开头没有使用#。更改此:

var dummyEl = document.getElementById('#myID');

对此:

var dummyEl = document.getElementById('myID');

如果希望使用CSS查询,则可以使用QuerySelector(和QuerySelectorAll)。

匿名用户

使用document.activeelement

应该管用。

p.sgetElementById(“myId”)notgetElementById(“#myId”)