From 7d232c0b30bd69986da7eba27d9ef89da542a19b Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Sun, 19 Jan 2025 19:33:59 +0000 Subject: [PATCH 01/29] missing for loop brackets on line 57, added --- debugging/book-library/script.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 75ce6c1d..8fb849e9 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -54,7 +54,7 @@ function render() { let table = document.getElementById("display"); let rowsNumber = table.rows.length; //delete old table - for (let n = rowsNumber - 1; n > 0; n-- { + for (let n = rowsNumber - 1; n > 0; n--) { table.deleteRow(n); } //insert updated row and cells @@ -90,11 +90,11 @@ function render() { //add delete button to every row and render again let delButton = document.createElement("button"); - delBut.id = i + 5; + delButton.id = i + 5; deleteCell.appendChild(delBut); - delBut.className = "btn btn-warning"; - delBut.innerHTML = "Delete"; - delBut.addEventListener("clicks", function () { + delButton.className = "btn btn-warning"; + delButton.innerHTML = "Delete"; + delButton.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From 883602315befdc1eb4e720f3557c5ab5bf240a0f Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Sun, 19 Jan 2025 19:48:28 +0000 Subject: [PATCH 02/29] changed let for const to create the new button --- debugging/book-library/script.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 8fb849e9..eed706fd 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -90,11 +90,11 @@ function render() { //add delete button to every row and render again let delButton = document.createElement("button"); - delButton.id = i + 5; + delBut.id = i + 5; deleteCell.appendChild(delBut); - delButton.className = "btn btn-warning"; - delButton.innerHTML = "Delete"; - delButton.addEventListener("clicks", function () { + delBut.className = "btn btn-warning"; + delBut.innerHTML = "Delete"; + delBut.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From 6688f1bc106aaf48f925ce02725750151c8dc6cb Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Sun, 19 Jan 2025 19:49:37 +0000 Subject: [PATCH 03/29] bug with declaration of variable fixed with delButton --- debugging/book-library/script.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index eed706fd..b620f0f9 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -7,7 +7,7 @@ window.addEventListener("load", function (e) { function populateStorage() { if (myLibrary.length == 0) { - let book1 = new Book("Robison Crusoe", "Daniel Defoe", "252", true); + let book1 = new Book("Robinson Crusoe", "Daniel Defoe", "252", true); let book2 = new Book( "The Old Man and the Sea", "Ernest Hemingway", @@ -37,8 +37,8 @@ function submit() { alert("Please fill all fields!"); return false; } else { - let book = new Book(title.value, title.value, pages.value, check.checked); - library.push(book); + let book = new Book(title.value, author.value, pages.value, check.checked); + myLibrary.push(book); render(); } } @@ -89,12 +89,12 @@ function render() { }); //add delete button to every row and render again - let delButton = document.createElement("button"); - delBut.id = i + 5; - deleteCell.appendChild(delBut); - delBut.className = "btn btn-warning"; - delBut.innerHTML = "Delete"; - delBut.addEventListener("clicks", function () { + const delButton = document.createElement("button"); + delButton.id = i + 5; + deleteCell.appendChild(delButton); + delButton.className = "btn btn-warning"; + delButton.innerHTML = "Delete"; + delButton.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From d20badadca7767c176f5df289fa35c7a072c9689 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Sun, 19 Jan 2025 20:15:32 +0000 Subject: [PATCH 04/29] fixed bug incorrect name event, clicks instead "click" and passing as parameter index directly in the event to avoid overlapping, delButton eventListener --- debugging/book-library/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index b620f0f9..277a95d5 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -94,9 +94,9 @@ function render() { deleteCell.appendChild(delButton); delButton.className = "btn btn-warning"; delButton.innerHTML = "Delete"; - delButton.addEventListener("clicks", function () { + delButton.addEventListener("click", function (index) { alert(`You've deleted title: ${myLibrary[i].title}`); - myLibrary.splice(i, 1); + myLibrary.splice(index, 1); render(); }); } From 86d7c9747fcf1481d105354bc393256ab275e729 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Sun, 19 Jan 2025 20:35:40 +0000 Subject: [PATCH 05/29] fixed boolean comparision to false == "No" --- debugging/book-library/script.js | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 277a95d5..a3715e8a 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -76,10 +76,10 @@ function render() { changeBut.className = "btn btn-success"; wasReadCell.appendChild(changeBut); let readStatus = ""; - if (myLibrary[i].check == false) { - readStatus = "Yes"; - } else { + if (myLibrary[i].check == "false") { readStatus = "No"; + } else { + readStatus = "Yes"; } changeBut.innerText = readStatus; @@ -88,6 +88,29 @@ function render() { render(); }); + + // second option to booleans comparisons + // let changeBut = document.createElement("button"); + // changeBut.id = i; + // changeBut.className = "btn btn-success"; + // wasReadCell.appendChild(changeBut); + // let readStatus = ""; + + // // Directly check for boolean value (true or false) + // if (myLibrary[i].check == false) { + // readStatus = "No"; + // } else { + // readStatus = "Yes"; + // } + + // changeBut.innerText = readStatus; + + // changeBut.addEventListener("click", function () { + // myLibrary[i].check = !myLibrary[i].check; // Toggle the read status + // render(); + // }); + + //add delete button to every row and render again const delButton = document.createElement("button"); delButton.id = i + 5; From 1fa900db84872e0b3110398b99e92d677cc4c755 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 18:55:53 +0100 Subject: [PATCH 06/29] fix: add raw code --- debugging/book-library/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugging/book-library/index.html b/debugging/book-library/index.html index 23acfa71..342c9d0f 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -93,4 +93,4 @@

Library

- + \ No newline at end of file From 601d465e926ae597f008a92d424479b4701925a5 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 18:57:12 +0100 Subject: [PATCH 07/29] fix: correct book title and variable declaration in library management --- debugging/book-library/script.js | 52 +++++++++----------------------- 1 file changed, 15 insertions(+), 37 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index a3715e8a..337980ca 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -1,3 +1,4 @@ + let myLibrary = []; window.addEventListener("load", function (e) { @@ -7,7 +8,7 @@ window.addEventListener("load", function (e) { function populateStorage() { if (myLibrary.length == 0) { - let book1 = new Book("Robinson Crusoe", "Daniel Defoe", "252", true); + let book1 = new Book("Robison Crusoe", "Daniel Defoe", "252", true); let book2 = new Book( "The Old Man and the Sea", "Ernest Hemingway", @@ -37,8 +38,8 @@ function submit() { alert("Please fill all fields!"); return false; } else { - let book = new Book(title.value, author.value, pages.value, check.checked); - myLibrary.push(book); + let book = new Book(title.value, title.value, pages.value, check.checked); + library.push(book); render(); } } @@ -54,7 +55,7 @@ function render() { let table = document.getElementById("display"); let rowsNumber = table.rows.length; //delete old table - for (let n = rowsNumber - 1; n > 0; n--) { + for (let n = rowsNumber - 1; n > 0; n-- { table.deleteRow(n); } //insert updated row and cells @@ -76,10 +77,10 @@ function render() { changeBut.className = "btn btn-success"; wasReadCell.appendChild(changeBut); let readStatus = ""; - if (myLibrary[i].check == "false") { - readStatus = "No"; - } else { + if (myLibrary[i].check == false) { readStatus = "Yes"; + } else { + readStatus = "No"; } changeBut.innerText = readStatus; @@ -88,38 +89,15 @@ function render() { render(); }); - - // second option to booleans comparisons - // let changeBut = document.createElement("button"); - // changeBut.id = i; - // changeBut.className = "btn btn-success"; - // wasReadCell.appendChild(changeBut); - // let readStatus = ""; - - // // Directly check for boolean value (true or false) - // if (myLibrary[i].check == false) { - // readStatus = "No"; - // } else { - // readStatus = "Yes"; - // } - - // changeBut.innerText = readStatus; - - // changeBut.addEventListener("click", function () { - // myLibrary[i].check = !myLibrary[i].check; // Toggle the read status - // render(); - // }); - - //add delete button to every row and render again - const delButton = document.createElement("button"); - delButton.id = i + 5; - deleteCell.appendChild(delButton); - delButton.className = "btn btn-warning"; - delButton.innerHTML = "Delete"; - delButton.addEventListener("click", function (index) { + let delButton = document.createElement("button"); + delBut.id = i + 5; + deleteCell.appendChild(delBut); + delBut.className = "btn btn-warning"; + delBut.innerHTML = "Delete"; + delBut.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); - myLibrary.splice(index, 1); + myLibrary.splice(i, 1); render(); }); } From 3485ff14aeff9133d5058d67e2019d7f9d342b61 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 18:57:45 +0100 Subject: [PATCH 08/29] fix: add missing newline at end of style.css file --- debugging/book-library/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugging/book-library/style.css b/debugging/book-library/style.css index 302950cb..0013d1be 100644 --- a/debugging/book-library/style.css +++ b/debugging/book-library/style.css @@ -16,4 +16,4 @@ button.btn-info { margin: 20px; -} +} \ No newline at end of file From 2fcb6a80fc3ad323a18cb36ebb975a54b1b72a2e Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 19:13:34 +0100 Subject: [PATCH 09/29] fix: correct for loop syntax and update delete button variable name --- debugging/book-library/script.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 337980ca..e65435d8 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -55,7 +55,7 @@ function render() { let table = document.getElementById("display"); let rowsNumber = table.rows.length; //delete old table - for (let n = rowsNumber - 1; n > 0; n-- { + for (let n = rowsNumber - 1; n > 0; n--) { table.deleteRow(n); } //insert updated row and cells @@ -90,12 +90,12 @@ function render() { }); //add delete button to every row and render again - let delButton = document.createElement("button"); - delBut.id = i + 5; - deleteCell.appendChild(delBut); - delBut.className = "btn btn-warning"; - delBut.innerHTML = "Delete"; - delBut.addEventListener("clicks", function () { + let deleteBtn = document.createElement("button"); + deleteBtn.id = i + 5; + deleteCell.appendChild(deleteBtn); + deleteBtn.className = "btn btn-warning"; + deleteBtn.innerHTML = "Delete"; + deleteBtn.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From 438f376a6e0f497f16ec938e4c476090e21307f0 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 19:15:25 +0100 Subject: [PATCH 10/29] fix: update title of book library page for clarity --- debugging/book-library/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debugging/book-library/index.html b/debugging/book-library/index.html index 342c9d0f..e6c9168a 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -1,7 +1,7 @@ - + Book Library Library - \ No newline at end of file + From b290901bce56036cc1813c1a4f414a9dbc49b114 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 19:21:41 +0100 Subject: [PATCH 11/29] fix: correct library variable name and update delete button splice method --- debugging/book-library/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index e65435d8..55c67eda 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -39,7 +39,7 @@ function submit() { return false; } else { let book = new Book(title.value, title.value, pages.value, check.checked); - library.push(book); + myLibrary.push(book); render(); } } @@ -97,7 +97,7 @@ function render() { deleteBtn.innerHTML = "Delete"; deleteBtn.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); - myLibrary.splice(i, 1); + myLibrary.splice(i, -1); render(); }); } From 7694e714afbba44703caed89800b4b38fe9a8273 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 19:32:50 +0100 Subject: [PATCH 12/29] fix: return author value instead title twice --- debugging/book-library/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 55c67eda..48fc6d4f 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -38,7 +38,7 @@ function submit() { alert("Please fill all fields!"); return false; } else { - let book = new Book(title.value, title.value, pages.value, check.checked); + let book = new Book(title.value, author.value, pages.value, check.checked); myLibrary.push(book); render(); } @@ -97,7 +97,7 @@ function render() { deleteBtn.innerHTML = "Delete"; deleteBtn.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); - myLibrary.splice(i, -1); + myLibrary.splice(i, 1); render(); }); } From dd289a1015550d91239f323e9a07c4b2efdb3a7f Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 19:47:07 +0100 Subject: [PATCH 13/29] fix: remove "s" from event listener click --- debugging/book-library/script.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 48fc6d4f..206a9254 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -4,6 +4,7 @@ let myLibrary = []; window.addEventListener("load", function (e) { populateStorage(); render(); + }); function populateStorage() { @@ -95,9 +96,9 @@ function render() { deleteCell.appendChild(deleteBtn); deleteBtn.className = "btn btn-warning"; deleteBtn.innerHTML = "Delete"; - deleteBtn.addEventListener("clicks", function () { + deleteBtn.addEventListener("click", function (index) { alert(`You've deleted title: ${myLibrary[i].title}`); - myLibrary.splice(i, 1); + myLibrary.splice(index, 1); render(); }); } From 71e5cc0b9f84763eeef0f72ded387cb903c0013f Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 19:52:22 +0100 Subject: [PATCH 14/29] fix: correct read status boolean logic in render function --- debugging/book-library/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 206a9254..7069d0f2 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -79,9 +79,9 @@ function render() { wasReadCell.appendChild(changeBut); let readStatus = ""; if (myLibrary[i].check == false) { - readStatus = "Yes"; - } else { readStatus = "No"; + } else { + readStatus = "Yes"; } changeBut.innerText = readStatus; From 8ad522c3632bb5e12673922e000d03f3ff98bcee Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 20:02:30 +0100 Subject: [PATCH 15/29] fix: validate author and pages input in submit function --- debugging/book-library/script.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 7069d0f2..8539792e 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -33,10 +33,14 @@ function submit() { if ( title.value == null || title.value == "" || + author.value == null || + author.value == "" || pages.value == null || - pages.value == "" + pages.value == "" || + pages.value <= 0 || + pages.value != parseInt() ) { - alert("Please fill all fields!"); + alert("Please fill the field with valid info!"); return false; } else { let book = new Book(title.value, author.value, pages.value, check.checked); From 592e2392149f294aab0bb6277f0a01933703cd50 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Thu, 9 Apr 2026 20:10:09 +0100 Subject: [PATCH 16/29] fix: validate pages input in submit function --- debugging/book-library/script.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 8539792e..5992d3e1 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -1,10 +1,8 @@ - let myLibrary = []; window.addEventListener("load", function (e) { populateStorage(); render(); - }); function populateStorage() { @@ -37,7 +35,7 @@ function submit() { author.value == "" || pages.value == null || pages.value == "" || - pages.value <= 0 || + pages.value <= 0 || pages.value != parseInt() ) { alert("Please fill the field with valid info!"); From dcf690fbb55ecb3d20f4d5215fcee06656b76166 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Fri, 10 Apr 2026 17:49:58 +0100 Subject: [PATCH 17/29] fix: meta lang missing. - remove static tags, generated by Dom and. - fix: id in the opening tag --- debugging/book-library/index.html | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/debugging/book-library/index.html b/debugging/book-library/index.html index e6c9168a..6d71327b 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -1,7 +1,7 @@ - + - Book Library + + Book Library -
+ @@ -75,20 +76,13 @@

Library

Title Author - Number of Pages + NPages Read - + Action - - - - - - - - - + + From 872bff6406feaff36d543c93088233443fcb1fd5 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Fri, 10 Apr 2026 18:47:06 +0100 Subject: [PATCH 18/29] refactor: change the name var from table to librarybody, removed the for loop delete to clear the table before to render --- debugging/book-library/script.js | 41 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 5992d3e1..ae93c0a0 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -29,14 +29,10 @@ const check = document.getElementById("check"); //via Book function and start render function function submit() { if ( - title.value == null || - title.value == "" || - author.value == null || - author.value == "" || - pages.value == null || - pages.value == "" || - pages.value <= 0 || - pages.value != parseInt() + !title.value || + !author.value || + !pages.value || + pages.value <= 0 ) { alert("Please fill the field with valid info!"); return false; @@ -55,24 +51,29 @@ function Book(title, author, pages, check) { } function render() { - let table = document.getElementById("display"); - let rowsNumber = table.rows.length; - //delete old table - for (let n = rowsNumber - 1; n > 0; n--) { - table.deleteRow(n); - } + let libraryBody = document.getElementById("table-body"); + + //clean the table before render new one + libraryBody.innerHTML = ""; + + // //delete old table + // for (let n = rowsNumber - 1; n > 0; n--) { + // libraryBody.deleteRow(n); + // } + //insert updated row and cells - let length = myLibrary.length; - for (let i = 0; i < length; i++) { - let row = table.insertRow(1); + for (let i = 0; i < myLibrary.length; i++) { + let row = libraryBody.insertRow(-1); + let titleCell = row.insertCell(0); let authorCell = row.insertCell(1); let pagesCell = row.insertCell(2); let wasReadCell = row.insertCell(3); let deleteCell = row.insertCell(4); - titleCell.innerHTML = myLibrary[i].title; - authorCell.innerHTML = myLibrary[i].author; - pagesCell.innerHTML = myLibrary[i].pages; + + titleCell.textContent = myLibrary[i].title; + authorCell.textContent = myLibrary[i].author; + pagesCell.textContent = myLibrary[i].pages; //add and wait for action for read/unread button let changeBut = document.createElement("button"); From 6010622edf5596711868b1688195504f25c665e9 Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Tue, 14 Apr 2026 15:12:15 +0100 Subject: [PATCH 19/29] style: update form styles for better responsiveness and layout --- debugging/book-library/style.css | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/debugging/book-library/style.css b/debugging/book-library/style.css index 0013d1be..168cdf82 100644 --- a/debugging/book-library/style.css +++ b/debugging/book-library/style.css @@ -1,12 +1,12 @@ .form-group { - width: 400px; - height: 300px; - align-self: left; - padding-left: 20px; + width: 100%; + height: auto; + padding: 20px; } -.btn { - display: block; + +form { + margin-bottom: 20px; } .form-check-label { @@ -16,4 +16,7 @@ button.btn-info { margin: 20px; -} \ No newline at end of file +} +.btn { + display: block; +} From a85ea0c9dca10d3b9156ff6ab8aba27e99d913cd Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Tue, 14 Apr 2026 15:12:38 +0100 Subject: [PATCH 20/29] style: fix form layout and improve input field organization --- debugging/book-library/index.html | 111 +++++++++++------------------- 1 file changed, 42 insertions(+), 69 deletions(-) diff --git a/debugging/book-library/index.html b/debugging/book-library/index.html index 6d71327b..d0f6bb14 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -1,20 +1,15 @@ - - + + + Book Library + + - Book Library - + @@ -24,67 +19,45 @@

Library

Add books to your virtual library

- +
+ +
+ +
+
+ + + -
-
- - - - - - - - + + + + + + + + +
-
+ - - - - - - - - - - - - -
TitleAuthorNPagesReadAction
- + + + + + + + + + + + + +
TitleAuthorNo. PagesReadAction
+ From 6080c0c8fe04cd614c60a9fc9851136e1ddf1c1c Mon Sep 17 00:00:00 2001 From: "Karla G." Date: Tue, 14 Apr 2026 15:19:41 +0100 Subject: [PATCH 21/29] style: refine form structure and enhance input field attributes --- debugging/book-library/index.html | 42 +++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/debugging/book-library/index.html b/debugging/book-library/index.html index d0f6bb14..86a96e0d 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -10,7 +10,7 @@ - + @@ -25,19 +25,19 @@

Library

-
-
+ +
- + - + - - + + -