即使有一个闭包,javascript for循环undefined索引

时间:2016-06-15 22:45:17

标签: javascript for-loop closures

我有这段代码:

function func() 
{

    function resetCases()
    {
        for(var t = 0; t < tds.length; t++)
        {
            (function(t)
            {
                tds[t].style.border = "3px solid #CC0000";
            })(t);
        } 
    }


    var i = 0;
    var tds = new Array();
    for(var y = maxLC; y >= (-maxLC-1); y--)
    {
        // not the whole code is written, "div" exists...
        var tr = div.appendChild(document.createElement('tr'));
        for(var x = (-maxLC-1); x <= maxLC; x++)
        {
            i++;

            tds[i] = tr.appendChild(document.createElement('td'));
            tds[i].style.border = "3px solid black";

            subDiv[i] = tds[i].appendChild(document.createElement('div'));

            tds[i].onmouseout = function(){resetCases();};
        }
    }
}
func();

即使我删除了闭包,错误

  

tds [t]未定义

仍显示在控制台中。

但是,如果我写

  

的console.log(TDS [T]);

而不是

  

tds [t] .style.border =&#34; 3px solid#CC0000&#34 ;;

没有更多的错误...

我做错了什么?感谢

1 个答案:

答案 0 :(得分:1)

好吧......我觉得我是个白痴...... tds [0]不存在,因为我在for循环的开头写了i ++ ... 所以...

我真的很抱歉这个愚蠢的错误 问题解决了