Передача переменной Javascript из одной функции в другую функцию для использования в запросе sqlite - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь написать функцию Javascript, которая получает массив уникальных идентификаторов из базы данных sqlite, а затем передает их для использования в другой функции, где идентификаторы могут использоваться в другом запросе sql, они также образуют часть динамическисоздан список.

Мне удалось передать строку идентификаторов ['id'] в переменную массива window.symp [i].Но я не смог получить к ним правильный доступ во второй функции, приведенной ниже, вторая функция правильно использует идентификаторы для создания динамического HTML, но переменная, переданная в запрос sqlite, либо дает сбой, либо имеет одинаковое значение во всех созданных элементах списка.Любая помощь будет принята с благодарностью - я включил обе функции ниже:

function showContent() {
    db.transaction(function (tx) {
        tx.executeSql("SELECT id, notes FROM webkit WHERE notes LIKE 'A%'", [], function (tx, result) {
            var notesanode = document.getElementById('notesa');
            notesanode.innerHTML = "";

            for (var i = 0; i < result.rows.length; ++i) {
                var row = result.rows.item(i);
                window.symp[i] = i;
                window.symp[i] = row['id'];
                var noteadiv = document.createElement('div');
                noteadiv.innerHTML = '<li class=\"arrow\"><a id=\"0\" onClick=\"showSymptoms()\" href=\"#symptoms\">' + row['notes'] + " " + row['id'] + '</a></li>';
                notesanode.appendChild(noteadiv);

            }

        }, function (tx, error) {
            alert('Failed to retrieve notes from database - ' + error.message);
            return;
        });
    });
}

function showSymptoms() {
    db.transaction(function (tx) {
        tx.executeSql("SELECT sid, symptom FROM slinks WHERE id LIKE ('" + symp + "')", [], function (tx, result) {
            var symptomnode = document.getElementById('symptomid');
            symptomnode.innerHTML = "";

            for (var i = 0; i < result.rows.length; ++i) {
                var row = result.rows.item(i);
                var symptomdiv = document.createElement('div');
                symptomdiv.innerHTML = '<p><label> <input type=checkbox>' + row['symptom'] + '</label></p>';
                symptomnode.appendChild(symptomdiv);
            }

        }, function (tx, error) {
            alert('Failed to retrieve notes from database - ' + error.message);
            return;
        });
    });
}

1 Ответ

0 голосов
/ 13 мая 2011

Я вижу две вещи:

Основная проблема в том, что вам нужно

"SELECT sid, symptom FROM slinks WHERE id LIKE ('" + window.symp.join(',') + "')"

вместо того, что у вас там наверху.

Вторая проблема в том, что у вас есть

window.symp[i] = i;
window.symp[i] = row['id'];

Вы можете просто удалить window.symp[i] = i;, потому что он сразу перезаписывается строкой, следующей за ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...