为什么我的js代码中的for循环只执行最后一次,是闭包造成的么,怎么解决吖

问题描述:

save.onclick=function(){
for (var i = 1; i < tb.getElementsByTagName('tr').length; i++) {
var tds=tb.getElementsByTagName('tr')[i].getElementsByTagName('td');
database.transaction(function(fx){
fx.executeSql(
"insert into class (id,name,age,sex)values(?,?,?,?)",
[tds[0].innerHTML,tds[1].innerHTML,tds[2].innerHTML,tds[3].innerHTML],
function(){
alert("insert success!!!");
},
function(){
alert("insert false!!!");
}
)
})
}

}

     save.onclick = function () {
        for (var i = 1; i < tb.getElementsByTagName('tr').length; i++) {
            var tds = tb.getElementsByTagName('tr')[i].getElementsByTagName('td');
            database.transaction(

                (function () {
                    return function (fx) {
                        fx.executeSql(
                            "insert into class (id,name,age,sex)values(?,?,?,?)",
                            [tds[0].innerHTML, tds[1].innerHTML, tds[2].innerHTML, tds[3].innerHTML],
                            function () {
                                alert("insert success!!!");
                            },
                            function () {
                                alert("insert false!!!");
                            }
                        )
                    }
                })(tds)
                );
        }

    }

是length 么?试试size

是不是tds出现覆盖了

getElementsByTagName返回的是结果数组,