การ เข้าใจ พื้น ฐาน

การสร้างโปรแกรมจัดการที่คั่นหน้าด้วยจาวาสคริปต์และเว็บ page API เป็นโครงงานที่ดีสําหรับความเชี่ยวชาญของคอนเซ็ปต์ด้านหน้าหลัก โปรแกรมต้องดําเนินการ 3 แบบ: [FLT: 0] สร้าง [FLT: 1) สร้าง [FLT: 1], [FT:2] อ่าน [FTTT: 3] และ[FT: 4] DLT [FLT: 5] – รูปแบบคลาสสิก - การปรับปรุงชีวิตของเบราว์เซอร์ในปัจจุบัน [FLTT] [TLT] [TLLLT]] ] เครือข่ายแบบนอกระบบ: เครือข่ายของเบเกญร็ อนุญาตให้มีการย้ายผ่านเครือข่ายของบาร์บีเวอร์กี (FTLTIFTIFT:

ก่อน จะ เขียน รหัส บรรทัด เดียว ให้ ทํา ให้ ความ เข้าใจ ของ คุณ มั่นคง ใน เรื่อง เสา หลัก ต่อ ไป นี้:

  • [FLT: 0] DOM API: คุณจะสอบถามองค์ประกอบ, ฟังเหตุการณ์ และจัดการต้นไม้เอกสารเพื่อแสดงที่คั่นหน้าแบบไม่เปลี่ยนแปลง
  • [FLT: 0]. localStoprise: ] ร้านขายคีย์นี้ยังเป็นข้อมูลแม้จะปิดแล้วก็ตาม มันรองรับเฉพาะสตริงเท่านั้น วัตถุจะต้องถูกต่อเติมเข้ากับ [FLT: 0] และเสื่อมค่าด้วย [FTT: 1].
  • [FLT: 0] โปรแกรมแบบ Hent-drider: Forms ปล่อย เหตุการณ์ที่; ลบปุ่มยิง [FT:3] เหตุการณ์ที่เกิดขึ้นใน ค.ศ.
  • [FLT: 0]] วิธีอาเรย์: ] [[FLT: 6]] และ[FLT: 6] จะช่วยในการแสดงและจัดการรายการที่คั่นหน้าอย่างมีประสิทธิภาพ

การสร้างโปรแกรมจัดการที่คั่นหน้าหลัก

โครงสร้าง HTML

เริ่มด้วยโครงสร้างแบบเซมาติก HTML ขั้นต่ํา โดยแบบฟอร์มจะรวบรวมชื่อและที่อยู่ URL ของที่คั่นหน้า และรายการที่ไม่ได้เรียง จะแสดงที่คั่นหน้าที่เก็บไว้

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Bookmark Manager</title>
</head>
<body>
 <h1>My Bookmarks</h1>
 <form id="bookmarkForm">
 <label for="name">Name</label>
 <input type="text" id="name" required />
 <label for="url">URL</label>
 <input type="url" id="url" required />
 <button type="submit">Add Bookmark</button>
 </form>
 <ul id="bookmarkList"></ul>
 <script src="app.js" defer></script>
</body>
</html>

โปรดสังเกตว่า [FLT: 9] แอตทริบิวต์บนแท็กสคริปต์ -- มันเพื่อให้แน่ใจว่า DOM ถูกวิเคราะห์อย่างละเอียดก่อนสคริปต์ทํางาน โดยจะกําจัดความต้องการ [FLT: 10] ที่ถูกคอมไพล์ในรูปแบบสมัยใหม่

การ บรรเลง เพลง เพื่อ ความ สามารถ (เป็น ไป ได้ แต่ ได้ รับ การ แนะ นํา)

CSS ไม่ใช่โฟกัส ส่วนติดต่อแบบบริสุทธิ์นั้นสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้ เพิ่มรูปแบบสไตล์ชีตแบบเรียบง่ายไปยังช่องว่างในแบบฟอร์ม ให้ดูสม่ําเสมอ และทํารูปแบบรายการที่คั่นหน้าด้วยลูกเล่นการลอยตัว โดยส่วนที่น้อยที่สุดคือ styling สามารถถูกฉีดโดยจาวาสคริปต์ได้เช่นกัน แต่แยก [FLT: 11] เหมาะกับการรักษาได้

<!-- inside <head> -->
<link rel="stylesheet" href="style.css" />

ใน [FLT: 13] ใช้ตัวย่อของรูปแบบผัง, ความกว้างสูงสุดของกล่อง และเสียงเตือนแบบเห็นได้ชัดเจนในการลบปุ่มเพื่อป้องกันการคลิกแบบไม่ได้ตั้งใจ

ตรรกะจาวาสคริปต์ – หัวใจของโปรแกรม

ความต่อเนื่องและปฏิกิริยาทั้งหมดอยู่ใน . ส่วนต่อไปนี้จะลดลงแต่ละฟังก์ชัน.

เริ่มการเริ่มข้อมูล

เราต้องการตัวแปรกลางที่ถือรายการของที่คั่นหน้าปัจจุบัน โดยมันควรจะถูกตั้งต้นจาก [FLT: 15] หรือถอยกลับไปอยู่ในอาร์เรย์ที่ว่างเปล่า

let bookmarks = [];

function loadBookmarks() {
 const stored = localStorage.getItem('bookmarks');
 if (stored) {
 bookmarks = JSON.parse(stored);
 } else {
 bookmarks = [];
 }
}

function saveBookmarks() {
 localStorage.setItem('bookmarks', JSON.stringify(bookmarks));
}

loadBookmarks();

[FLT: 17] ฟังก์ชันนี้เรียกว่า ทุกครั้งที่อาร์เรย์เปลี่ยนแปลง ทุกครั้งที่เพิ่ม, แก้ไขหรือลบคั่นหน้า

แสดงที่คั่นหน้า

การแสดงรายการที่คั่นหน้า หมายถึง การทําการสร้างรายการตาม [FLT: 18] อาร์เรย์ และสร้างรายการด้วยป้ายสมอและปุ่มลบ

function renderBookmarks() {
 const list = document.getElementById('bookmarkList');
 list.innerHTML = ''; // clear existing entries

 bookmarks.forEach(function(bookmark, index) {
 const li = document.createElement('li');
 li.dataset.index = index;

 const link = document.createElement('a');
 link.href = bookmark.url;
 link.textContent = bookmark.name;
 link.target = '_blank';
 link.rel = 'noopener noreferrer';

 const deleteBtn = document.createElement('button');
 deleteBtn.textContent = 'Delete';
 deleteBtn.addEventListener('click', function() {
 deleteBookmark(index);
 });

 li.appendChild(link);
 li.appendChild(deleteBtn);
 list.appendChild(li);
 });
}

ใช้ [FLT: 20] แทนการใช้ข้อมูล HTML ภายใน หลีก เลี่ยงความไม่เสถียรของ XSSS เมื่อชื่อที่คั่นหน้ามี HTML อยู่ ปุ่ม ลบจะใช้การปิดเพื่อจับภาพดัชนีของที่คั่นหน้า

เพิ่มคั่นหน้า

ฟังเหตุการณ์ [FLT: 21] ของแบบฟอร์ม ป้องกันการโหลดหน้าปริยาย สร้างวัตถุที่คั่นหน้า ผลักดันมันไปยังอาร์เรย์ ต่อเนื่อง และรีเดอร์ (Re-render)

document.getElementById('bookmarkForm').addEventListener('submit', function(e) {
 e.preventDefault();

 const nameInput = document.getElementById('name');
 const urlInput = document.getElementById('url');

 const newBookmark = {
 name: nameInput.value.trim(),
 url: urlInput.value.trim()
 };

 // Basic validation: ensure URL starts with http/https
 if (!newBookmark.url.startsWith('http://') && !newBookmark.url.startsWith('https://')) {
 newBookmark.url = 'https://' + newBookmark.url;
 }

 bookmarks.push(newBookmark);
 saveBookmarks();
 renderBookmarks();

 // Reset form
 nameInput.value = '';
 urlInput.value = '';
 nameInput.focus();
});

วิธีการนี้ตรงไปตรงมา สําหรับการผลิต คุณอาจจะต้องการตรวจสอบรูปแบบ URL มากขึ้น โดยใช้ [FLT: 23] ตัวสร้างหรือ regax

ลบที่คั่นหน้า

การลบรายการที่มีผลลบ ที่คลังดัชนีและการปรับปรุงและ DOM

function deleteBookmark(index) {
 bookmarks.splice(index, 1);
 saveBookmarks();
 renderBookmarks();
}

ใช้ [FLT: 25] เปลี่ยนแปลงลําดับลําดับตําแหน่ง ถ้าคุณต้องการใช้งานแบบไม่จํากัด คุณสามารถใช้ และ reasign [FT: 27] แต่สําหรับโครงการเล็กๆ แบบนี้ ชัดเจนและดําเนินการได้

การควบคุมโปรแกรม

เมื่อ CRUD พื้นฐานทํางาน พิจารณาการปรับปรุงเหล่านี้จะเปลี่ยนต้นแบบเป็นเครื่องมือที่แข็งแกร่ง

กําลังแก้ไขที่คั่นหน้า

แทนที่ชื่อตายตัว/ เชื่อมโยงด้วยโหมดแก้ไขแบบข้อความ ซึ่งเมื่อผู้ใช้คลิกที่ปุ่มแก้ไข ให้สลับรูปแบบ สมอด้วยช่องป้อนข้อมูล ก่อนด้วยค่าปัจจุบัน เมื่อบันทึก จะมีการปรับปรุงอาร์เรย์ และยังคงคงตําแหน่งไว้

คําใบ้การเติมข้อมูล: เพิ่มฟังก์ชัน [FLT: 29] ที่สร้างการใส่ข้อมูลแก้ไขได้ ใช้ [FLT: 0] ตัวแทน ในรายการเพื่อจัดการการแก้ไขโดยไม่ต้องแนบผู้ฟังหลายคน

การกําหนดค่าด้วยป้ายกํากับ

เพิ่มคุณสมบัติ [FLT: 30] สมบัติของแต่ละที่คั่นหน้า (เช่น [FLT: 31]] จากนั้นเพิ่มข้อมูล UI ด้วยตัวกรองที่ซ่อนรายการที่ป้ายกํากับไม่เข้าคู่กับรายการ คุณสามารถจัดเก็บป้ายกํากับเป็นเครื่องหมายจุลภาค- dictiond ภายในรูปแบบและแยกมันเข้ากับอาร์เรย์ได้

นําเข้าและส่งออก

อนุญาตให้ผู้ใช้ทําการสํารองข้อมูล หรือทําการโอนถ่ายที่คั่นหน้าได้ ใช้ หรือดาวน์โหลดแฟ้มได้ ส่งออกเป็นอนุกรม เป็นข้อความ JONson และเรียกดาวน์โหลดผ่านทาง [FLT: 34] และ[FLT: 35] นําเข้าข้อมูลและผนวกเข้ากับที่คั่นหน้าที่มีอยู่แล้ว

function exportBookmarks() {
 const data = JSON.stringify(bookmarks, null, 2);
 const blob = new Blob([data], { type: 'application/json' });
 const url = URL.createObjectURL(blob);
 const a = document.createElement('a');
 a.href = url;
 a.download = 'bookmarks.json';
 a.click();
 URL.revokeObjectURL(url);
}

ค้นหาและกรอง

เพิ่มรายการที่ป้อนมาเหนือที่คั่นหน้า ในแต่ละรายการ [FLT: 37] ตัวกรองรายการ ตัวกรองลําดับ และเรียกค่าต่าง ๆ ของรายการ [FT: 39] ที่แสดงเฉพาะรายการที่เข้าคู่กับรายการเท่านั้น เพื่อไม่ให้สูญเสียรายการเดิม ให้จัดเก็บรายการตัวกรองที่คัดลอกหรือใช้พารามิเตอร์คํานวณไว้

การเข้ากันได้กับเบราว์เซอร์

เว็บเบราว์เซอร์รุ่นใหม่ทั้งหมดสนับสนุนการท่องเว็บ แต่รุ่นที่เก่ากว่าของอินเทอร์เน็ตเอกซ์พลอเรอร์ (IT 8+) มีเอพีไอแบบอื่น หากคุณต้องสนับสนุนสภาพแวดล้อมมรดก ทดสอบด้วยโพลีพัล หรือถอยกลับไปหาคุกกี้ ปัจจุบัน [FLT: 0] chorome, Firefox, Safari, Edia, Ed (FLT: 1) (ทั้งโครเมียมและมรดก) จัดจัดการ [FLT: 40] และ [FLT] [LTL: BOL] โดยไม่มีปัญหา

เมื่อ ทดสอบ ให้ ตรวจ สอบ:

  • ข้อมูลอยู่รอดจากหน้ารีเฟรช และเบราว์เซอร์ที่เริ่มใช้งานอีกครั้ง
  • การลบที่คั่นหน้า การปรับปรุงทั้ง UI และจัดเก็บ
  • อักขระพิเศษในชื่อที่คั่นหน้า (comes, amsports) ถูกแปลอย่างถูกต้องแล้ว
  • ที่อยู่ URL ที่มีทั้งไม่มี ถูกปรับให้เป็นปกติ

ใช้ [FLT: 0] เครื่องมือขยายภาพ > โปรแกรม & gt; จัดเก็บข้อมูลท้องถิ่นเพื่อตรวจสอบข้อมูลด้วยตนเอง [FLT: 2) สําหรับการทดสอบอัตโนมัติ พิจารณาใช้ CEGE [FLT: 4] หรือ[FLT: 5] PlayT [FTH] play[FTHT] จําลองผู้ใช้งาน — แบบฟอร์ม, กรอกข้อมูล, ลบ, และยืนยันการถอดภาพ

รูปแบบการวน

โครงการนี้แสดงให้เห็นว่า จาวาสคริปต์ไม่กี่สิบเส้น สามารถสร้างโปรแกรมเว็บที่ใช้งานได้อย่างเต็มที่ได้โดยสมบูรณ์ คุณเรียนรู้ที่จะควบคุม [FLT: 0] ท้องถิ่น API เพื่อใช้ข้อมูล [FLT: 1) เพื่อความต่อเนื่อง . สืบค้น [FTT: 3] สําหรับ ULT: FIT และ [FLT] CTUV[FLTLLT] โดยไม่ต้องใช้รูปแบบการนําไปใช้ในระบบย่อย (FTIFLT) — ตั้งต้นการจัดเก็บข้อมูล, การจัดเก็บข้อมูล, การย้ายสถานะ, และ resentering ormormalformormalformormalformormorm (in). resenterformates).

เพื่อเพิ่มความเข้าใจของคุณ ให้สํารวจ [FLT: 0] เอกสารของ MDN บนท้องที่ [FLT: 1) และอ่านเกี่ยวกับ event language in DOLT[FTT:3]. สําหรับการจัดการระบบเพิ่มเติม ดูเพิ่มที่ [FLTT: 4] infededDB [FLT: 5] สําหรับข้อมูลขนาดใหญ่ [FT] หรือ [FT] FT [FT] [FT] เวิร์ค เวิร์คเวอร์ชัน [FTIFF(FFLLL] ]. – บล็อกเหล่านี้ โดยมีพื้นฐานการก่อสร้างใหม่ คุณสามารถขยายความรู้ส่วนตัวของคุณได้.