• November 23, 2025

    ข้อมูลใน 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 ครับ



เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories


Uncategorized