下面是我們正在努力做的:使用相同的變量2個功能在javascript
$(document).ready(function()
{
for (var i = 0; i < 10; i++)
{
for (var j = 0; j < 15; j++)
{
$('#Row'+(i+1)+'Sub' + (j+1) + '_ClientDropDown').ready(function()
{ TrimServices_Function("Row" + (i+1) + "_Sub" + (j+1).ToString() + "_ClientDropDown"); })
}
}
})
不幸的是,JavaScript並沒有真正通過i和j進入第二正常工作。當在做其他測試警報它將創建一個具有正確的初始呼叫一條線,但隨後另一部分只是返回10和15。因此,可以說線5分7將是:
$('#Row5Sub7_ClientDropDown').ready(function()
{ TrimServices_Function("Row11_Sub16_ClientDropDown"); })
我們怎麼會去製作確定我們通過行和子匹配的行循環?
它的正常工作。你正在創建一個閉包變量,每次通過循環改變它們的值。所以當函數稍後執行時,這些變量的值是捕獲這些變量的最終值,而不是函數傳遞給ready()時的值。這是關閉的正確行爲。 – RJM
這是這個問題的答案:http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – RJM
用'let'替換for循環中的'var'。 – 2017-04-26 02:31:15