SQLite: проблема с SELECT * FROM Tble, где? - PullRequest
0 голосов
/ 31 января 2012

Я работаю в автономном режиме с SQLite, Javascript и Chrome. На моей главной странице (main.html) у меня есть два элемента div: <div id="menuLeft">, который содержит список имен элементов с кнопками для редактирования каждого элемента, и

<div id="content">

Список элементов записывается следующим образом:

<li>ItemName1
    <div id="idItem1" class="editItem_btn">
        <img src="btn_edit.png">`
    </div>
</li>

В main.html у меня есть следующий код:

$("#menuLeft").delegate(".editItem_btn", "click", function(e0)
     {
        e0.preventDefault();
        var editItemId = $(this).attr("id");
        editItemId = parseInt(editItemId);
        var url="edititem.html"
        $("#content").load(url,function(){
        loadRecord(editItemId);`
    });
});

Когда я нажимаю на кнопку редактированияданного элемента, идентификатор элемента сначала извлекается из идентификатора div вокруг кнопки редактирования.Затем я загружаю страницу edititem.html контентом.В случае успеха я запускаю функцию loadRecord (editItemId), где loadRecord (i) содержится в edititem.html:

function loadRecord(j) 
{
    var item = dataset.item(j);
    idItem.value = item['id'];
    ItemName.value = item['ItemName'];
    dateStart.value = item['dateStart'];
    dateEnd.value = item['dateEnd'];
    notes.value = item['notes'];
}

Эта функция позволяет отображать параметры Item (id, ItemName ....) содержится в базе данных.

Вот моя проблема, код работает, но странным образом, означая, что, если я нажму на кнопку редактирования Item1, отобразятся параметры Item2.То же самое, если я нажму на Edit Item2, отобразятся параметры Item3.

Затем я заменил:

var item = dataset.item(j);

на:

var item = dataset.item(j-1);

, и это работает.Но мне нужно понять, почему он так себя ведет и почему мне нужно его использовать (j-1).Я поместил функцию alert () в код jquery, чтобы убедиться, что у меня правильный номер editItemId, и в функции loadRecord (j).Правый идентификационный номер извлекается после щелчка, а правильный идентификационный номер передается в функцию.Я понятия не имею, в чем здесь ошибка!

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Не видя sql стороны вещей и того, как эти данные передаются обратно в ваш скрипт, невозможно точно сказать вам, что происходит, но это просто случай, когда некоторые списки основаны на 0, а некоторые списки основаны на 1.Например, массивы обычно основаны на 0 (если вы специально не создаете их по-другому), но $ ("# id"). Each (function (Index) ... ... основан на 1. Вы просто должны знать, что выработать и иногда делать то, что вы нашли, и использовать -1 или +1, когда это уместно.

1 голос
/ 31 января 2012

Хотя я не знаком со сложностями SQLite, я подозреваю, что dataset.item(j):

  • принимает индекс на основе 0
  • что вы передаете в record_id (который сам по себе не является индексом массива)
  • и что record_id для набора данных, который вы тестируете, просто равен индексу + 1 (что означает, что вам сейчас повезло, и что оно, вероятно, изменится при загрузке следующего набора данных).

Я бы проверил, есть ли эквивалент для dataset.item(j), который принимает record_id, а не индекс. В противном случае вы, вероятно, захотите сохранить индекс записи где-то в самой записи, чтобы иметь возможность передать его в вашу функцию loadRecord.

Надеюсь, это поможет,

Пит

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