【问题标题】:Don't make functions within a loop error I can't fix不要在我无法修复的循环错误中创建函数
【发布时间】:2017-08-29 18:18:51
【问题描述】:

所以我正在使用 JSlint 并尝试实现以下代码,但我收到错误消息“不要在我无法修复的循环错误中创建函数”。知道如何更改我的代码以使其不会收到错误/警告吗?

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]);
}

【问题讨论】:

  • 在外面创建函数并传入数据
  • 关闭的意义何在?您不要保存input 以供以后使用。

标签: javascript for-loop jslint


【解决方案1】:

您希望将函数移到循环之外:

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]);
}

【讨论】:

  • 这就是我需要的。谢谢楼主!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    您可以使用“Frxstrem”建议的代码更改

    【讨论】:

      猜你喜欢
      • 2011-03-03
      • 2011-10-15
      • 2014-08-17
      • 2023-03-30
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多