如何检查我的元素 ID 是否具有焦点?

2022-08-30 02:20:58

假设我有以下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')
                }
            });
        }

我在控制台中收到一条错误消息,内容如下:

类型错误:无法读取空值的属性“hasFocus”

知道我在这里做错了什么吗?也许是我传递 div Id 的方式?


答案 1

document.activeElement 与要检查焦点的元素进行比较。如果它们相同,则元素是聚焦的;否则,事实并非如此。

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

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

hasFocus 是 ;DOM元素没有这样的方法。document

此外,在 的开头不使用 a。更改此设置:document.getElementById#myID

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

对此:

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

如果你想改用 CSS 查询,可以使用 querySelector(和 querySelectorAll)。


答案 2

document.activeElement

应该工作。

附言 不getElementById("myID")getElementById("#myID")