cymiz=50=qr-code-เจนออนไลน์+คอมม่า,ทศนิยม.html
cymiz=50-1.html
cymiz=50-2.html
cymiz=50-3.html
cymiz=51=qr-code-เจนออนไลน์+คอมม่า,ทศนิยม=ปรับปรุงGTP
จากการวิเคราะห์ซอร์สโค้ดของไฟล์ทั้ง 5 ไฟล์ที่ส่งมา พบว่าเป็นการพัฒนาต่อเนื่องเพื่อแก้ปัญหาเรื่อง “การคำนวณตัวเลขที่มีคอมม่า” และ “ความแม่นยำในการระบุแถว” โดยจุดแตกต่างสำคัญสรุปได้ดังนี้ครับ
ตารางเปรียบเทียบจุดแตกต่างของไฟล์ cymiz=50 ถึง 51
| คุณสมบัติ / ไฟล์ | cymiz=50 (ต้นฉบับ) | cymiz=50-1 ถึง 50-3 | cymiz=51 (GTP ปรับปรุง) |
| การจัดการคอมม่า | ใช้ .replace(/,/g, '') ในฟังก์ชันคำนวณเป็นจุดๆ | คล้าย 50 แต่เริ่มมีการจัดระเบียบ calcRow ใหม่ | รวมศูนย์การจัดการ โดยสร้างฟังก์ชัน cleanNumber แยกต่างหาก (ในบางเวอร์ชัน) หรือใช้ Logic ที่เข้มงวดขึ้นเพื่อป้องกันค่า NaN |
| การระบุตำแหน่ง Input | ใช้การนับลำดับ Index เช่น inputs[3], inputs[8] | ใช้การนับลำดับ Index (ยังมีโอกาสเพี้ยนถ้าเพิ่มช่องใหม่) | เปลี่ยนไปใช้ Class Name เช่น .col-net, .col-final ทำให้ระบุช่องที่จะลงตัวเลขได้แม่นยำ 100% แม้จะแก้ HTML |
| โครงสร้างฟังก์ชัน | มีฟังก์ชัน crc16 ที่ไม่ได้ใช้งานค้างอยู่ | เริ่มตัดส่วนเกินออกบ้าง | Refactor ใหม่ ลบโค้ดขยะออกทั้งหมด และจัดระเบียบ Event oninput ให้เรียก calculateSum ได้เสถียรกว่า |
| ความแม่นยำ Full Mode | มีปัญหา: หากกดแก้ไขตัวเลขซ้ำ ตัวเลขอาจจะหายหรือกระโดด | แก้ไขไปบางส่วน | สมบูรณ์ที่สุด: แยกส่วนดึงค่า (Get) และแสดงผล (Set) ชัดเจน ทำให้พิมพ์ตัวเลขได้ลื่นไหล |
| ฟีเจอร์ QR Code | ใช้ PromptPay QR ผ่าน API | ใช้ PromptPay QR ผ่าน API | มีการเพิ่ม Scan to Pay text และปรับขนาดภาพให้ชัดขึ้น |
เจาะลึกความแตกต่างรายไฟล์
- cymiz=50 (Original):
- เป็นโครงสร้างพื้นฐานที่มีปัญหาเรื่อง “เส้นผมบังภูเขา” คือเมื่อช่องจ่ายสุทธิมีคอมม่าแล้วถูกนำไปคำนวณต่อ ระบบจะมองเป็นตัวหนังสือ ทำให้ผลรวมกลายเป็น 0 หรือ NaN
- มีการใช้
inputs[8]ซึ่งเสี่ยงมากหากมีการขยับ Row
- cymiz=50-1 ถึง 50-3:
- เป็นการทดลองแก้ปัญหาเฉพาะหน้า (Hotfix) โดยพยายามแทรกการลบคอมม่าในบรรทัดคำนวณ
- ความแตกต่างระหว่าง 50-1, 50-2, 50-3 คือการวางตำแหน่งคำสั่ง
parseFloatและการจัดการ Eventonblurเพื่อโชว์คอมม่าคืน
- cymiz=51 (GTP ปรับปรุง):
- จุดเปลี่ยนสำคัญ: เลิกใช้ระบบนับช่อง (Index-based) แล้วเปลี่ยนมาใช้ระบบชื่อคลาส (Class-based) เช่น
row.querySelector('.col-stamp') - Logic การคำนวณ: ปรับให้
calcRowคำนวณเสร็จในตัว แล้วค่อยสั่งcalculateSumให้รวมยอดทั้งหมดจากทุกแถวอีกที ทำให้ยอดรวม (Grand Total) ไม่เพี้ยน - ความสะอาด: ลบฟังก์ชัน
crc16ที่รกทิ้งไป ทำให้ไฟล์เล็กลงและประมวลผลเร็วขึ้น
- จุดเปลี่ยนสำคัญ: เลิกใช้ระบบนับช่อง (Index-based) แล้วเปลี่ยนมาใช้ระบบชื่อคลาส (Class-based) เช่น
คำแนะนำ: หากต้องการใช้งานจริง ไฟล์ cymiz=51 คือไฟล์ที่มีความเสถียรที่สุดในแง่ของ Programming Logic ครับ เพราะลดความเสี่ยงเรื่อง Index เคลื่อน และจัดการเรื่อง Number Formatting ได้เบ็ดเสร็จกว่าไฟล์อื่นๆ