Видимость переменной во вложенной функции
Здравствуйте, прошу помочь вот с чем.
Пишу скрипт который будет собирать информацию со страницы в WebSQL. Но столкнулся с тем, что переменная счетчика цикла i не видна в функции tx. Подскажите, как исправить? for (i=0;i<count.length;i++){ db.transaction(function(tx) { tx.executeSql("INSERT INTO players (galaxy, system, planet, planetname, name, alliance) VALUES (?,?,?,?,?,?);",[galaxy,system,planet[i],planetname[i],player[i],alliance[i]]);});} Здесь привожу полный текст скрипта: var planet = Array(); var planetname = Array(); var player = Array(); var alliance = Array(); var i = 0; var db = openDatabase("SK", "1", "Players", 200000); //db.transaction(function(tx) {tx.executeSql("CREATE TABLE players (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, galaxy INT, system INTEGER, planet INTEGER, planetname TEXT, name TEXT, alliance TEXT);")}); var galaxy = Number($("[name='galaxy']")[0].value) var system = Number($("[name='system']")[0].value) var count = $(".galaxy_row"); for (i=0;i<count.length;i++){ planet[i] = Number($(".galaxy_row")[i].children[1].innerText) planetname[i] = $(".galaxy_row")[i].children[3].innerText player[i] = $(".galaxy_row")[i].children[6].innerText alliance[i] = $(".galaxy_row")[i].children[7].innerText db.transaction(function(tx) {tx.executeSql("INSERT INTO players (galaxy, system, planet, planetname, name, alliance) VALUES (?,?,?,?,?,?);",[galaxy,system,planet[i],planetname[i],player[i],alliance[i]]);}); |
Rovor,
переделайте for на each |
рони,
Можно чуть подробнее, пожалуйста?) |
Rovor,
count.each(function(i, elem) { planet[i] = Number(elem.children[1].innerText); //... }); |
рони,
Спасибо огромное, проблема решена) Если несложно, объясните, пожалуйста, в чём была ошибка? |
Rovor,
переменная i сохраняла последнее значение, а не то которое было в момент формирования, если нужно сохранить значение используют замыкание с помощью методов типа each или заменяют var на let(если возможно). |
|
рони,
Спасибо!) |
Часовой пояс GMT +3, время: 14:18. |