我正在使用 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 的 id 中检索该项目的 id。然后我加载页面 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 的参数。同样,如果我点击编辑 Item2,也会显示 Item3 的参数。
然后我替换了:
var item = dataset.item(j);
与:
var item = dataset.item(j-1);
这样就可以了。但我需要理解为什么它会这样,以及为什么我需要使用 (j-1)。我在 jquery 代码中放置了一些alert(),以检查我是否拥有正确的 editItemId 编号,并在函数 loadRecord(j) 中放置了一些alert()。单击后会检索正确的 ID 号,并将正确的 ID 号传递给该函数。我不知道这里有什么错误!
最佳答案
如果没有看到 sql 方面的内容,以及如何将数据传递回脚本,就不可能准确地告诉您发生了什么,但这只是一些列表基于 0 和一些列表基于 1 的情况。例如,数组通常是基于 0 的(除非您专门以不同的方式创建它们),但 $("#id").each(function(Index)... 是基于 1 的。您只需要知道您是什么使用并偶尔按照您发现的方式进行操作,并在相关时使用 -1 或 +1。
关于javascript - SQLite:SELECT * FROM Table 的问题在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9083623/