如果将重点放在具有特定类名的元素上,我正在try 获得布尔true.但Document.activeElement似乎只适用于ID或标记名,这无济于事,因为它们是同一类型的元素.情况是这样的:

var test2 = document.getElementsByClassName('test2')
var test3 = document.getElementsByClassName('test3')

test3[1].focus()

isFocused2 = (document.activeElement === test2)
isFocused3 = (document.activeElement === test3)

document.getElementById('test').innerHTML = isFocused3
<input type="text" class="test2">
<input type="text" class="test3">
<input type="text" class="test2">
<input type="text" class="test3">

<div id="test"></div>

@Michael仅当将focus ()设置为输入时才起作用,如下所示,但单击输入似乎不会激活它,因此使isFocused变量保持为False(我的错误是让您认为我想使用该方法来聚焦,而不是单击)

const prev = document.getElementsByClassName('prev');
const curr = document.getElementsByClassName('curr');

// curr[1].focus()

var isFocused1 = document.activeElement.classList.contains("prev");
var isFocused2 = document.activeElement.classList.contains("curr");


function fx2 () {
document.getElementById('test').innerHTML += isFocused1 + ' ' + isFocused2 + ' '
}
<table>
    <tr>
   <td><input type="text" name="" class="prev" onclick="fx2()"></td>
   <td><input type="text" name="" class="curr" onclick="fx2()"></td>
   <td><p class="Mtr-result"></p></td>
    </tr>
    <tr>
<td><input type="text" name="" class="prev" onclick="fx2()"></td>
<td><input type="text" name="" class="curr" onclick="fx2()"></td>
<td><p class="Mtr-result"></p></td>
    </tr>


<div  id="test"></div>

如您所见,Focus方法已被注释掉,输入上的onClick事件属性调用fx2()函数,该函数将‘test’div的innerHTML值更改为isFocused1和isFocused2的值,这两个值都显示为FALSE.

推荐答案

正如Bergi和Zchiah在 comments 中指出的那样,您所需要做的就是使用document.activeElement.classList.contains("test2")来判断关注的元素是否具有test2类.

Element.classList.contains(class)是一个可以在任何元素上调用的方法,包括document.activeElement.如果您正在调用的元素包含传递给方法的类,则它将返回true,否则将返回false.

var test2 = document.getElementsByClassName('test2')
var test3 = document.getElementsByClassName('test3')

var isFocused2;
var isFocused3;

function fx() {
  isFocused2 = document.activeElement.classList.contains("test2")
  isFocused3 = document.activeElement.classList.contains("test3")

  document.getElementById('test').innerHTML = isFocused2 + ' ' + isFocused3;
}

window.addEventListener('focusin', fx);
window.addEventListener('focusout', fx);
<input type="text" class="test2">
<input type="text" class="test3">
<input type="text" class="test2">
<input type="text" class="test3">

<div id="test"></div>

Javascript相关问答推荐

JavaScript setSYS()是否有可能更早触发?

使用脚本标签时的JSDoc智能感知

promise .all()永不解决

在Chart.js 4.4.2中移动到不同大小的容器时,图表不会调整大小

我想做一个程序,计算字符串中所有单词的数量

我可以后增量超过1(最好是内联)吗?

如何在dataTables PDF输出中正确渲染字形?

我应该在redux reducer中调用其他reducer函数吗?

如何在Obsidian dataview中创建进度条

将现场录音发送到后端

更改JSON中使用AJAX返回的图像的路径

简单的PayPal按钮集成导致404错误

如何在Vue 3中创建自定义 Select 组件,并将选项作为HTML而不是props 传递?

更改预请求脚本中重用的JSON主体变量- Postman

JQuery Click事件不适用于动态创建的按钮

连接到游戏的玩家不会在浏览器在线游戏中呈现

使用Nuxt Apollo在Piniastore 中获取产品细节

根据一个条件,如何从处理过的数组中移除一项并将其移动到另一个数组?

令牌JWT未过期

每隔3个项目交替显示,然后每1个项目交替显示