Видимость переменной во вложенной функции
Здравствуйте, прошу помочь вот с чем.
Пишу скрипт который будет собирать информацию со страницы в 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, время: 10:48. |