为什么我的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!!!");
}
)
})
}

}

4个回答

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

    }
qq_31130299
qq_31130299 多谢,解决了
接近 4 年之前 回复

是length 么?试试size

qq_31130299
qq_31130299 size是jq的写法吧 我单步调试了 i的值能获取 只是不执行循环里面的内容 只有 i 到最后一个值才执行循环里面的
接近 4 年之前 回复

是不是tds出现覆盖了

qq_31130299
qq_31130299 就是想让他覆盖吖 就是i=1时取第二行里的td 然后i=2时取第三行里的td
接近 4 年之前 回复

getElementsByTagName返回的是结果数组,

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐