From 15b2999f13083609cfc066e3647fa1a7062abebf Mon Sep 17 00:00:00 2001 From: Elisabeth-Matulian Date: Tue, 31 Mar 2026 15:09:35 +0100 Subject: [PATCH 1/9] fix: add missing bracket in for-loop --- debugging/book-library/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 75ce6c1d..eed706fd 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 From a07a2adb3922dac0a3aff4399a3b22ac68068e0d Mon Sep 17 00:00:00 2001 From: Elisabeth-Matulian Date: Wed, 1 Apr 2026 19:50:26 +0100 Subject: [PATCH 2/9] fix: correct variable names, author field, event typo, read status value --- 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 eed706fd..7703af0f 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -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(); } } @@ -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; @@ -89,12 +89,12 @@ function render() { }); //add delete button to every row and render again - let delButton = document.createElement("button"); + let delBut = document.createElement("button"); delBut.id = i + 5; deleteCell.appendChild(delBut); delBut.className = "btn btn-warning"; delBut.innerHTML = "Delete"; - delBut.addEventListener("clicks", function () { + delBut.addEventListener("click", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From 2979096194ef15269b2b71b17d2941ee7cfffff5 Mon Sep 17 00:00:00 2001 From: Elisabeth-Matulian Date: Wed, 1 Apr 2026 19:56:53 +0100 Subject: [PATCH 3/9] fix: add page title to HTML head --- 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..fef4f0d7 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -1,7 +1,7 @@ - + My Book Library Date: Fri, 3 Apr 2026 20:13:35 +0100 Subject: [PATCH 4/9] fix: meta; input type. --- debugging/book-library/index.html | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/debugging/book-library/index.html b/debugging/book-library/index.html index fef4f0d7..b8d64e27 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -1,12 +1,9 @@ - + + + My Book Library - @@ -31,7 +28,7 @@

Library

Library /> Date: Fri, 3 Apr 2026 20:22:08 +0100 Subject: [PATCH 5/9] type added for script --- 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 b8d64e27..7298488d 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -88,6 +88,6 @@

Library

- + From c8f8813918b58c7d3389cca1c57beeadb7e8a8fc Mon Sep 17 00:00:00 2001 From: Elisabeth-Matulian Date: Fri, 3 Apr 2026 23:37:51 +0100 Subject: [PATCH 6/9] refactoring --- debugging/book-library/script.js | 61 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 7703af0f..a84ae277 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -7,37 +7,36 @@ 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("Robison Crusoe", "Daniel Defoe", 252, true); let book2 = new Book( "The Old Man and the Sea", "Ernest Hemingway", - "127", + 127, true ); myLibrary.push(book1); myLibrary.push(book2); - render(); } } -const title = document.getElementById("title"); -const author = document.getElementById("author"); -const pages = document.getElementById("pages"); +const inputTitle = document.getElementById("title"); +const inputAuthor = document.getElementById("author"); +const inputPages = document.getElementById("pages"); const check = document.getElementById("check"); //check the right input from forms and if its ok -> add the new book (object in array) //via Book function and start render function function submit() { if ( - title.value == null || - title.value == "" || - pages.value == null || - pages.value == "" + //inputTitle.value == null || + inputTitle.value == "" || + //inputPages.value == null || + inputPages.value == "" ) { alert("Please fill all fields!"); return false; } else { - let book = new Book(title.value, author.value, pages.value, check.checked); + let book = new Book(inputTitle.value, inputAuthor.value, Number(inputPages.value), check.checked); myLibrary.push(book); render(); } @@ -51,53 +50,53 @@ function Book(title, author, pages, check) { } function render() { - let table = document.getElementById("display"); - let rowsNumber = table.rows.length; + let tableDisplay = document.getElementById("display"); + let rowsNumber = tableDisplay.rows.length; //delete old table for (let n = rowsNumber - 1; n > 0; n--) { - table.deleteRow(n); + tableDisplay.deleteRow(n); } //insert updated row and cells let length = myLibrary.length; for (let i = 0; i < length; i++) { - let row = table.insertRow(1); + let row = tableDisplay.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"); - changeBut.id = i; - changeBut.className = "btn btn-success"; - wasReadCell.appendChild(changeBut); + let changeBtn = document.createElement("button"); + //changeBtn.id = i; + changeBtn.className = "btn btn-success"; + wasReadCell.appendChild(changeBtn); let readStatus = ""; if (myLibrary[i].check === false) { readStatus = "No"; } else { readStatus = "Yes"; } - changeBut.innerText = readStatus; + changeBtn.innerText = readStatus; - changeBut.addEventListener("click", function () { + changeBtn.addEventListener("click", function () { myLibrary[i].check = !myLibrary[i].check; render(); }); //add delete button to every row and render again - let delBut = document.createElement("button"); - delBut.id = i + 5; - deleteCell.appendChild(delBut); - delBut.className = "btn btn-warning"; - delBut.innerHTML = "Delete"; - delBut.addEventListener("click", function () { - alert(`You've deleted title: ${myLibrary[i].title}`); + let deleteBtn = document.createElement("button"); + //deleteBtn.id = i + 5; + deleteCell.appendChild(deleteBtn); + deleteBtn.className = "btn btn-warning"; + deleteBtn.innerHTML = "Delete"; + deleteBtn.addEventListener("click", function () { myLibrary.splice(i, 1); render(); + alert(`You've deleted title: ${myLibrary[i].title}`); }); } } From e3f16db9c9e920ec64d0be6683d18aabffc9b1b3 Mon Sep 17 00:00:00 2001 From: Elisabeth-Matulian Date: Sun, 5 Apr 2026 14:49:42 +0100 Subject: [PATCH 7/9] removed redundant code; trimmed input value; upd alert message --- debugging/book-library/script.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index a84ae277..5d773cc5 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -28,15 +28,17 @@ const check = document.getElementById("check"); //via Book function and start render function function submit() { if ( - //inputTitle.value == null || - inputTitle.value == "" || - //inputPages.value == null || - inputPages.value == "" + inputTitle.value.trim() == "" || + inputAuthor.value.trim() == "" || + inputPages.value.trim() == "" || + Number(inputPages.value) <= 0 || + Number(inputPages.value) > 5000 + ) { - alert("Please fill all fields!"); + alert("Please check your input!"); return false; } else { - let book = new Book(inputTitle.value, inputAuthor.value, Number(inputPages.value), check.checked); + let book = new Book(inputTitle.value.trim(), inputAuthor.value.trim(), Number(inputPages.value.trim()), check.checked); myLibrary.push(book); render(); } @@ -71,7 +73,6 @@ function render() { //add and wait for action for read/unread button let changeBtn = document.createElement("button"); - //changeBtn.id = i; changeBtn.className = "btn btn-success"; wasReadCell.appendChild(changeBtn); let readStatus = ""; @@ -89,7 +90,6 @@ function render() { //add delete button to every row and render again let deleteBtn = document.createElement("button"); - //deleteBtn.id = i + 5; deleteCell.appendChild(deleteBtn); deleteBtn.className = "btn btn-warning"; deleteBtn.innerHTML = "Delete"; From 29b6a8605930ce0d28a5b6b5ce6fbc3f55b4d00e Mon Sep 17 00:00:00 2001 From: Elisabeth-Matulian Date: Sun, 5 Apr 2026 15:56:03 +0100 Subject: [PATCH 8/9] refactoring: variable declaration; ternary operator; render shortened --- debugging/book-library/script.js | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 5d773cc5..10a37d23 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -53,34 +53,26 @@ function Book(title, author, pages, check) { function render() { let tableDisplay = document.getElementById("display"); - let rowsNumber = tableDisplay.rows.length; //delete old table - for (let n = rowsNumber - 1; n > 0; n--) { - tableDisplay.deleteRow(n); - } + document.querySelector('#display tbody').innerHTML = ""; //insert updated row and cells let length = myLibrary.length; for (let i = 0; i < length; i++) { - let row = tableDisplay.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); + const row = tableDisplay.insertRow(1); + const titleCell = row.insertCell(0); + const authorCell = row.insertCell(1); + const pagesCell = row.insertCell(2); + const wasReadCell = row.insertCell(3); + const deleteCell = row.insertCell(4); 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 changeBtn = document.createElement("button"); + const changeBtn = document.createElement("button"); changeBtn.className = "btn btn-success"; wasReadCell.appendChild(changeBtn); - let readStatus = ""; - if (myLibrary[i].check === false) { - readStatus = "No"; - } else { - readStatus = "Yes"; - } + const readStatus = myLibrary[i].check === false ? "No" : "Yes"; changeBtn.innerText = readStatus; changeBtn.addEventListener("click", function () { @@ -89,14 +81,15 @@ function render() { }); //add delete button to every row and render again - let deleteBtn = document.createElement("button"); + const deleteBtn = document.createElement("button"); deleteCell.appendChild(deleteBtn); deleteBtn.className = "btn btn-warning"; deleteBtn.innerHTML = "Delete"; deleteBtn.addEventListener("click", function () { + const deletedBook = myLibrary[i].title; myLibrary.splice(i, 1); render(); - alert(`You've deleted title: ${myLibrary[i].title}`); + alert(`You've deleted title: ${deletedBook}`); }); } } From 2e542ad78fdc7d52f05137b1a32fcecf727933c1 Mon Sep 17 00:00:00 2001 From: Elisabeth-Matulian Date: Mon, 6 Apr 2026 19:36:38 +0100 Subject: [PATCH 9/9] refactoring --- debugging/book-library/script.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 10a37d23..9a881448 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -27,18 +27,22 @@ const check = document.getElementById("check"); //check the right input from forms and if its ok -> add the new book (object in array) //via Book function and start render function function submit() { + const pages = Number(inputPages.value); + const title = inputTitle.value.trim(); + const author = inputAuthor.value.trim(); + if ( - inputTitle.value.trim() == "" || - inputAuthor.value.trim() == "" || + title == "" || + author == "" || inputPages.value.trim() == "" || - Number(inputPages.value) <= 0 || - Number(inputPages.value) > 5000 - + pages <= 0 || + pages > 5000 || + !Number.isInteger(pages) ) { alert("Please check your input!"); return false; } else { - let book = new Book(inputTitle.value.trim(), inputAuthor.value.trim(), Number(inputPages.value.trim()), check.checked); + let book = new Book(title, author, pages, check.checked); myLibrary.push(book); render(); } @@ -52,13 +56,13 @@ function Book(title, author, pages, check) { } function render() { - let tableDisplay = document.getElementById("display"); + let tableBody = document.querySelector("#display tbody"); //delete old table - document.querySelector('#display tbody').innerHTML = ""; + tableBody.innerHTML = ""; //insert updated row and cells let length = myLibrary.length; for (let i = 0; i < length; i++) { - const row = tableDisplay.insertRow(1); + const row = tableBody.insertRow(0); const titleCell = row.insertCell(0); const authorCell = row.insertCell(1); const pagesCell = row.insertCell(2);