2017-04-27 85 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'很好,看起來3種類型的錯誤 –

+0

可以點擊我的代碼筆連接瞭解更多 –

+0

不,我不會 - 如果這裏的代碼不是你有問題的代碼,那麼你需要多思考這個問題 - 我無法從你發佈的內容中知道那應該是什麼,我只是知道你在做什麼是完全錯誤的,僅在這一行 –

回答

0

最後更新:

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

功能如下表所示:
您需要指定tableStore[i]的值爲i。因爲i是行號。如果您正在編輯網格的第5行,則同樣更新tableStore[4]=user如果您要更新第3行然後更新tableStore[2]=user。我已經爲它添加了代碼。我希望你能理解。

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

你應該使用這個來代替,因爲最終你將需要更新tableStore在localStorage的:

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" 
} 

你應該使用這個來代替,因爲最終你將需要更新tableStorelocalStorage

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

它可以將數據保存到本地,但它只是爲數組中的最終項目保存,如何doe s它保存我現在選擇的當前項目 –

+0

檢查此https://codepen.io/vikrant24/pen/ybgPww我已糾正 –

+0

很多謝謝,它清楚和有益於我,我發佈的最後一個問題'旁邊那個,這個操作對於js中的純函數並不是好主意。如果你能幫助我重構它。這意味着我創建的全局變量是opeation ='A',當我想要做編輯功能時,我通過opetation ='E'來切換它。這不是理想的做法,而不是純粹的功能。你可以建議我一些想法來改變它 –