document.activeElement没有'在Chrome上无法正常工作,有什么替代方案

document.activeElement doesn't work as expected on Chrome, what are the alternatives?

本文关键字:工作 方案 什么 常工作 没有 activeElement Chrome document      更新时间:2023-09-26

嗨,

在选中/取消选中复选框时,我希望选中/取消选择同一类的所有复选框,并禁用/启用关联的文本字段。

我设法用document.activeElementdocument.getElementsByClassName编写了一个代码,它可以做到这一点,只是它在Chrome上不起作用。据报道,Chrome中有一个错误,即除非activeElement是文本字段,否则它会返回body而不是实际的activeElement。

在修复错误之前,有没有一个我可以使用的变通方法?

我的代码:

JS:

function changeAll(variable) {
    var current = document.activeElement;
    var checkboxes = variable + "_g";
    var text = variable + "_v";
    var i;
    if (current.checked === true) {
        for (i = 0; i < document.getElementsByClassName(checkboxes).length; i++) {
            document.getElementsByClassName(checkboxes)[i].checked = true;
        }
        for (i = 0; i < document.getElementsByClassName(text).length; i++) {
            document.getElementsByClassName(text)[i].disabled = false;
        }
    } else {
        for (i = 0; i < document.getElementsByClassName(checkboxes).length; i++) {
            document.getElementsByClassName(checkboxes)[i].checked = false;
        }
        for (i = 0; i < document.getElementsByClassName(text).length; i++) {
            document.getElementsByClassName(text)[i].disabled = true;
        }
    }
}

HTML:

<input type="checkbox" class="y_g" onClick="changeAll('y')">
<input type="text" class="y_v" disabled>
<input type="checkbox" class="y_g" onClick="changeAll('y')">
<input type="text" class="y_v" disabled>
<br>
<input type="checkbox" class="x_g" onClick="changeAll('x')">
<input type="text" class="x_v" disabled>
<input type="checkbox" class="x_g" onClick="changeAll('x')">
<input type="text" class="x_v" disabled>

通过参考

HTML:

<input type="checkbox" class="y_g" onClick="changeAll(this,'y')">

JavaScript:

function changeAll(current, variable) {
    //var current = document.activeElement;

理想情况下,您不会使用内联事件。