2017-04-04 73 views
0

所以我使用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]); 
} 
+1

之外創建的功能和數據傳遞到它 –

+1

什麼是封閉的地步?您不保存'input'以備後用。 – Quentin

回答

1

你會想要移動功能的外循環:如果你想使用

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

這就是我需要的。謝謝,先生! – user7814645

0

在你的情況,你可以與封閉免除JsHint或EsLint可以選擇禁用該規則,但是在JsLint的情況下,除了更改代碼結構之外,沒有別的選擇。

您可以通過建議的代碼變更手續「Frxstrem」

0

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