假设我有以下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的方式?
将document.activeelement
与要检查焦点的元素进行比较。如果它们相同,则元素被聚焦;否则就不是了。
// dummy element
var dummyEl = document.getElementById('myID');
// check for focus
var isFocused = (document.activeElement === dummyEl);
HasFocus
是文档
的一部分;对于DOM元素没有这样的方法。
而且,document.getElementById
在myid
的开头没有使用#
。更改此:
var dummyEl = document.getElementById('#myID');
对此:
var dummyEl = document.getElementById('myID');
如果希望使用CSS查询,则可以使用QuerySelector
(和QuerySelectorAll
)。
使用document.activeelement
应该管用。
p.sgetElementById(“myId”)
notgetElementById(“#myId”)