Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除项目后,我应该如何更新标记?_Javascript_Jquery_Google Chrome Extension - Fatal编程技术网

Javascript 删除项目后,我应该如何更新标记?

Javascript 删除项目后,我应该如何更新标记?,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在开发我的Google chrome扩展的联系人模块。用户可以添加和删除联系人。一切都是通过JavaScript和jQuery完成的 这个问题更多的是关于逻辑,所以不要被代码吓倒。 以下是添加联系人的方式: function addContact(name){ var n = incContactNum(); chrome.extension.getBackgroundPage().setItem('contact'+n+'', name); contacts[n] = name;

我正在开发我的Google chrome扩展的
联系人
模块。用户可以添加和删除联系人。一切都是通过JavaScript和jQuery完成的

这个问题更多的是关于逻辑,所以不要被代码吓倒。

以下是添加联系人的方式:

function addContact(name){
 var n = incContactNum();
 chrome.extension.getBackgroundPage().setItem('contact'+n+'', name); 
 contacts[n] = name;
}
联系人总数应该增加,因此我们现在有
n
个联系人。此外,我们还更新了联系人数组

因此SQLite项表如下所示:

 ------------------------
|  key          value    |
 ------------------------
| contactNum     3       |
 ------------------------
| contact1       Test1   |
 ------------------------
| contact2       Test2   |
 ------------------------
| contact3       Test3   |
 ------------------------
 ------------------------
|  key          value    |
 ------------------------
| contactNum     2       |
 ------------------------
| contact1       Test1   |
 ------------------------
| contact3       Test3   |
 ------------------------
删除一行时,如第2行,表格如下所示:

 ------------------------
|  key          value    |
 ------------------------
| contactNum     3       |
 ------------------------
| contact1       Test1   |
 ------------------------
| contact2       Test2   |
 ------------------------
| contact3       Test3   |
 ------------------------
 ------------------------
|  key          value    |
 ------------------------
| contactNum     2       |
 ------------------------
| contact1       Test1   |
 ------------------------
| contact3       Test3   |
 ------------------------
如您所见,
contactNum
是递减的。我们现在有两个项目,但第二个项目有3作为索引,但它应该从contact3更改为contact2。当您看到my delete函数时,可能会意识到问题:

function removeContact(value){
 contacts = new Array(getValue("contactNum"));
 for(i = 1; i <= parseInt(getValue("contactNum")); i++){
  if(getValue("contact"+i) == value){
   chrome.extension.getBackgroundPage().deleteItem("contact"+i);
   decContactNum();
   break;
  }
 }
}
函数removeContact(值){
联系人=新数组(getValue(“contactNum”);

对于(i=1;i你有两个选择。第一个选择是我在你问题下面的评论中提到的

  • 修改后台页面中的代码,以减少要删除的键后面的每个键

函数removeContact(值){
var len=getValue(“contactNum”);
var=0;
对于(i=1;i
  • 只有在顺序无关紧要的情况下,这种方法才行。将要删除的记录(数据部分)与最后一条记录交换,然后按照您在代码发布中所做的方式删除最后一条记录

函数removeContact(值){
var len=getValue(“contactNum”);

对于(i=1;i你有两个选择。第一个选择是我在你问题下面的评论中提到的

  • 修改后台页面中的代码,以减少要删除的键后面的每个键

函数removeContact(值){
var len=getValue(“contactNum”);
var=0;
对于(i=1;i
  • 只有在顺序无关紧要的情况下,这种方法才行。将要删除的记录(数据部分)与最后一条记录交换,然后按照您在代码发布中所做的方式删除最后一条记录

函数removeContact(值){
var len=getValue(“contactNum”);

对于(i=1;i您可能需要修改背景页面代码,为
x>i
减少
i
中的x,您可能需要修改背景页面代码,为
x>i
减少
i
中的x
i
是要删除的项目。是的,我知道,但如何删除?这是我的背景页代码