ข้อมูลใน Local Storage หายไปเอง
ปัญหานี้เกิดขึ้นเมื่อฟังก์ชัน saveDataToLocalStorage() ถูกเรียกใช้ในขณะที่ ตารางบนหน้าเว็บว่างเปล่า (เช่น ก่อนที่ข้อมูลจะโหลดเสร็จ หรือเกิดข้อผิดพลาดในการสร้างแถว) ซึ่งทำให้มันบันทึก [] (Array ว่างเปล่า) ทับข้อมูลเดิมไป
สาเหตุที่พบบ่อยที่สุดคือการที่ฟังก์ชัน loadDataFromLocalStorage ถูกเรียกใช้ แต่ไม่มีข้อมูล (หรือข้อมูลไม่สมบูรณ์) แต่ฟังก์ชันอื่นที่สร้างแถว/จัดการแถวถูกเรียกและไปเรียก saveDataToLocalStorage ซ้ำ
📌 การแก้ไข: เพิ่มความปลอดภัยในการบันทึกข้อมูล
ในฟังก์ชัน saveDataToLocalStorage() เราจะเพิ่มการตรวจสอบว่าถ้าข้อมูลที่กำลังจะบันทึกเป็น Array ว่างเปล่า ([]) ให้ ไม่ทำการบันทึก ทับ Local Storage เพื่อป้องกันการสูญหายของข้อมูลโดยไม่ตั้งใจ
- ค้นหา ฟังก์ชันที่ขึ้นต้นด้วย:
function saveDataToLocalStorage() { - ค้นหา บรรทัดที่ขึ้นต้นด้วย:
data.sort((a, b) => new Date(a.date) - new Date(b.date)); - แทนที่ โค้ดที่ตามมาด้วย [CODE F5] ด้านล่างนี้:
[CODE F5] โค้ด saveDataToLocalStorage ที่เพิ่มการตรวจสอบ
JavaScript
// 2. เรียงข้อมูลตามวันที่ก่อนบันทึก
data.sort((a, b) => new Date(a.date) - new Date(b.date));
allData = data;
// ⭐️ FIX: ตรวจสอบว่าถ้าข้อมูลว่างเปล่า ไม่ต้องบันทึกทับข้อมูลเดิม
if (data.length > 0) {
localStorage.setItem('dataTable', JSON.stringify(data));
} else {
// หากไม่มีข้อมูลในตาราง ให้ลบ Local Storage เพื่อไม่ให้เกิดความสับสน (อาจเลือกไม่ทำอะไรเลยก็ได้)
localStorage.removeItem('dataTable');
}
updateTotalsContextually();
}
การแก้ไขนี้จะช่วยให้ saveDataToLocalStorage มีความปลอดภัยมากขึ้น โดยจะ ไม่บันทึก ข้อมูลว่างเปล่าทับข้อมูลที่มีอยู่เดิมใน Local Storage ครับ