不要在我无法修复的循环错误中创建函数

Don't make functions within a loop error I can't fix

所以我正在使用 JSlint 并尝试实现以下代码,但我收到了错误消息 "Don't make functions within a loop error I can't fix"。知道如何更改我的代码以使其不接收 errors/warnings?

var inputs = document.getElementsByTagName('input');
var blurInput = function () {
    this.blur();
};
for (var i = 0; i < inputs.length; i++) {
    (function (input) {
        input.addEventListener('focus', blurInput);
    })(inputs[i]);
}

您想将函数移出循环:

var inputs = document.getElementsByTagName('input');
var blurInput = function () {
    this.blur();
};

// (rename this to something useful...)
var doSomething = function (input) {
  input.addEventListener('focus', blurInput);
};

for (var i = 0; i < inputs.length; i++) {
    doSomething(inputs[i]);
}

在你的情况下,你可以省去那个闭包:

for (var i = 0; i < inputs.length; i++) {
    input[i].addEventListener('focus', blurInput);
}

如果您要使用 JsHint 或 EsLint,您可以选择禁用该规则,但如果是 JsLint,除了更改代码结构外别无选择。

您可以使用 'Frxstrem'

建议的代码更改