localStorage に格納された項目の「DELETE」メソッドを追加するまで、私のアプリケーションは期待どおりに動作していました。
文字列を受け取る次の HTML コードがあります。
<div>
<div ><input type="text" id="manuallyName" name="manuallyName" placeholder="Medicine Name, Strength & Form..." /></div>
<div class="ui-grid-a" style="padding:15px;">
<div class="ui-block-a"><input id="manualClear" type="Button" data-icon="delete" data-iconpos="left" value="Cancel" /></div>
<div class="ui-block-b"><input id="manuallyAdd" type="button" data-icon="cross" value="Add" /></div>
</div>
</div>
「追加」ボタンが押されると、次のスクリプトが呼び出されます。
$(document).ready(function () {
$('#manuallyAdd').click(function () {
if ($("#manuallyName").val() != "") {
var length = storage.length;
var number = storage.length;
if (length >= number) {
number++;
var key = "Medicine" + number.toString();
var value = $("#manuallyName").val();
storage.setItem(key, value);
}
document.getElementById("manuallyName").value = "";
return true;
}
else {
alert('Please Provide Medicine Name')
return false;
}
})
});
このスクリプトは問題なく動作します。基本的にストレージの長さをチェックし、ストレージ サイズに応じてキーを生成し、textfield
コンテンツを値に追加して保存します。
保存されたアイテムは、別のスクリプトによってlistview
withに表示されます。id="medList"
(スペースを節約するためにスクリプトを追加するつもりはありませんが、必要に応じてコメントしてください。追加します)。
listview
次のスクリプトは、との両方からアイテムを削除するスクリプトですlocalStorage
。
$('ul').on('click', '.del', function (el) {
$(this).closest('li').remove();
var key = $(this).attr('key');
localStorage.removeItem(key);
$('ul.medList').listview('refresh');
});
に保存されている「キー」を取得し、listview
それに応じて削除します。
今私の問題は、アイテムがlocalStorage
キーから削除されたときに一貫性がなくなり、$('#manuallyAdd').click(function ()
再度呼び出されたときにすべてがカウントされ、同様のキーが既に存在する場合はそれが置き換えられます(残念ながら必要ありません)。
たとえば、次のように説明します。
以下のものを保管しています。
Key = Medicine1 - Value = a
Key = Medicine2 - Value = b
Key = Medicine3 - Value = c
上記のリストビューでは、と のみをMedicine2
残して削除されます。Medicine1
Medicine3
別の「薬」を追加しようとすると、表示されると予想Key = Medicine4 - Value = New Medicine
されますが、代わりにMedicine3
古い値を削除して新しい値を保存することに保存されます。
これはif statement
、適切な解決策を提供する別の方法を見つけたり、回避したりしていないようです。
キーが既に存在するかどうかを確認し、別のキーを提供するステートメントを追加しようとしましたが、これは別の項目がリストから削除されるまでしか機能しません。
ポインタやアイデアは大歓迎です。
長い質問で申し訳ありませんが、私はそれを説明するために最善を尽くしました。まだ不明な点があればお知らせください。