Google Chromeの拡張モジュールcontacts
で作業しています。ユーザーは連絡先を追加および削除できます。すべてが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 |
------------------------
2行目は次のようになります。
------------------------
| key value |
------------------------
| contactNum 2 |
------------------------
| contact1 Test1 |
------------------------
| contact3 Test3 |
------------------------
同様に、contactNum
が減分されています。ここでは2つの項目がありますが、2番目の項目はインデックスとして3がありますが、contact3からcontact2に変更する必要があります。あなたは私の削除機能が表示されたら、問題を認識するかもしれません:
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;
}
}
}
項目は価値によって削除されます。そこで、対応するインデックスを検索してその行を削除します。連絡先の数が2になったので、インデックス3には決して達しません。
私の考え:最初の削除が行われるため、その後インデックスを再構築する必要があります。削除されたものからすべてのインデックスを減らします。
どうすればいいですか?
あなたは 'x>のi'' i'が削除される項目であるためcontact'x'' 'でのxをデクリメントし、背景ページのコードを変更する必要があります。 – SuperSaiyan
はい私は知っていますが、どうですか?ここに私のバックグラウンドページのコードhttp://jsfiddle.net/3jrv4/ –