2017-04-27 7 views
0

今、editUser()の機能を実装しています。私は)ボタンjqueryでローカルストレージからユーザ情報を編集

$("#table-list tbody").on("click", ".btn-edit", function() { 
operation = "E"; 

for (var i in tableStore) { 
    var temp = JSON.parse(tableStore[i]) 
    if ($(this).attr("data-id") === temp.id) { 
    $enterID.val(temp.id); 
    $enterFirstName.val(temp.firstname); 
    $enterLastName.val(temp.lastname); 
    $enterLPhone.val(temp.phone); 
    $enterEmail.val(temp.email); 
    $enterAddress.val(temp.address); 
    $enterBirthday.val(temp.birthday); 
    $enterGender.val(temp.gender); 
    $enterID.attr("readonly", "readonly"); 
    $enterFirstName.focus(); 
    } 
} 

}をクリックし処理するための関数を作成します。

これは、ローカルストレージからデータを取得するのに役立ちます。次に私がデータに変更するinputタグに関する情報を変更すると、ローカルストレージに更新されます。これは私がそれを行うに役立つ機能です。

function editUser(tableStore, user) { 
    tableStore[tableStore] = user 
    operation = "A" 
} 

とフォームが、私はそのように扱う提出です:

$("#table-list tbody").on("click", ".btn-delete", function() { 
    selected_index = parseInt($(this).attr("data-id").replace("Delete", "")); 
    $(this).parents('tr').remove() 
    deleteUserInfor(); 
    }); 

    $(".form-information").on("click", ".btn-save-change", function() { 
    if (operation == "A"){ 
     var newUser = readUserFromDOM(); 
     addUser(tableStore, newUser.serialize()); 
     localStorage.setItem("tableStore", JSON.stringify(tableStore)); 
    } 
    else { 
     var editingUser = readUserFromDOM(); 
     editUser(tableStore, editingUser.serialize()); 
     localStorage.setItem("tableStore", JSON.stringify(tableStore)); 
    } 
    }); 

しかし、いくつかのことが間違っていると私はデータを保存することはできません。だから間違っていることを私が助けてくれますか?

このマイコードuser manager code pen

それ以外にも、の操作は、jsの純粋な機能にとっては良い考えではありません。あなたは私をリファクタリングする助けてくださいすることができた場合は、それ

あなたの助けを

多くの感謝

+0

'tableStoreは[tableStore] = user'だけでなく、それは間違っている –

+0

の3種類を探しますあなたは私のコードをクリックすることができますもっと理解するためのペンのリンク –

+0

いいえ私はしません - あなたが問題を抱えているコードがここにないなら、あなたはもう少し質問を考える必要があります - あなたが投稿したものからはわかりません私はちょうどその行だけで完全に間違っていることを知っています –

答えて

0

最終更新:機能の下で示さ

https://codepen.io/vikrant24/pen/ybgPww

として:あなたが指定する必要が
tableStore[i]の値はiです。 iは行番号です。グリッドの5行目を編集している場合は、同様に、3行目を更新する場合はtableStore[2]=userを更新してtableStore[4]=userを更新してください。私はそれのためのコードを追加しました。あなたが理解して欲しいです。

function editUser(tableStore, user,i) { 
    tableStore[i] = user 
    operation = "A" 
} 

最終的にあなたがのlocalStorageでtableStoreことを更新する必要がありますので、あなたが代わりにこれを使用する必要があります。

function editUser(tableStore, user,i) { 
     tableStore[i] = user; 
     localStorage.setItem("tableStore", JSON.stringify(tableStore)); 
     operation = "A"; 
} 

前の回答
は、それが動作します。この機能を使用します。

function editUser(tableStore, user) { 
    tableStore[0] = user 
    operation = "A" 
} 

最終的にあなたがlocalStoragetableStoreことを更新する必要がありますので、あなたが代わりにこれを使用する必要があります。

function editUser(tableStore, user) { 
     tableStore[0] = user; 
     localStorage.setItem("tableStore", JSON.stringify(tableStore)); 
     operation = "A"; 
} 
+0

それはローカルにデータを保存することができますが、それは配列の最後の項目のために保存する、どのようにdoeそれは私が今選択する現在の項目を保存する –

+0

これをチェックしてください –

+0

多くのありがとう、それは私のために明確で有用な、私がそれを投稿する最後の質問それを整理しました。 、操作はjsの純関数のための良い考えではありません。もしあなたが私にリファクタリングするのを助けてくれたら、つまり、グローバル変数opeation = 'A'を作成し、編集機能を実行したいときは、opetation = 'E'で切り替えます。それは良い理想的ではなく、純粋な機能ではありません。あなたはそれを変更するためのアイディアを教えてもらえますか? –

関連する問題