Есть код:
function loadCurrentBookpage(pageNumber) {
let bookmarkButton = document.getElementById("bookmarkButton");
let bookmarkIcon = document.getElementById("bookmarkIcon");
let nextPageElement = document.getElementById("nextPageButton");
let previousPageElement = document.getElementById("previousPageButton");
let pageOfPagesElement = document.getElementById("pageOfPages");
let pageContentElement = document.getElementById("pageContent");
pageContentElement.textContent = "";
let authToken = localStorage.getItem("accessToken");
let bookmarksArray = localStorage.getItem("currentBookBookmarks").split(",");
let currentPageNumber = pageNumber;
let currentBookId = localStorage.getItem("currentBookId");
let url = "http://localhost:8080/api/books/" + currentBookId + "/pages?page=" + currentPageNumber;
console.log("Попытка отправить запрос на: " + url);
let xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.setRequestHeader("Authorization", authToken);
xhr.onload = function () {
if (xhr.readyState === 4) {
let resp = JSON.parse(xhr.responseText);
switch (xhr.status) {
case 200:
console.log("Успешный ответ сервера: " + xhr.responseText);
console.log("Содержимое страницы: " + resp.pageContent[0].pageContent);
pageContentElement.textContent = resp.pageContent[0].pageContent;
pageOfPagesElement.textContent = "Страница " + resp.currentFakePage + " из " + resp.totalPages;
if (resp.hasNext === true) {
nextPageElement.classList.remove("disabled")
} else {
nextPageElement.classList.add("disabled")
}
if (resp.hasPrevious === true) {
previousPageElement.classList.remove("disabled")
} else {
previousPageElement.classList.add("disabled")
}
if (bookmarksArray.includes(currentPageNumber)) {
console.log("Страница " + currentPageNumber + " есть в закладках");
bookmarkButton.classList.remove("btn-outline-primary");
bookmarkButton.classList.add("btn-primary");
bookmarkIcon.classList.remove("bi-bookmark");
bookmarkIcon.classList.add("bi-bookmark-check-fill");
bookmarkButton.dataset.action = "remove";
} else {
console.log("Страницы " + currentPageNumber + " в закладках нет");
bookmarkButton.classList.remove("btn-primary");
bookmarkButton.classList.add("btn-outline-primary");
bookmarkIcon.classList.remove("bi-bookmark-check-fill");
bookmarkIcon.classList.add("bi-bookmark");
bookmarkButton.dataset.action = "add";
}
break;
case 401:
console.log("Ошибка авторизации...")
break;
case 403:
console.log("Ошибка: " + resp.message);
break;
default:
console.log("Код: " + xhr.status + ", ответ сервера: " + xhr.responseText);
}
}
}
xhr.send();
}
Рядом с областью, где отображается загруженное содержимое (fullscreen modal из bootstrap), есть две кнопки, нажатие на которые вызывает следующие функции:
function loadNextPage() {
let currentPage = localStorage.getItem("currentPage");
console.log("loadNextPage. Текущее значение currentPage = " + currentPage);
loadCurrentBookPage(++currentPage);
console.log("loadNextPage. Новое значение currentPage = " + currentPage);
localStorage.setItem("currentPage", currentPage);
}
function loadPreviousPage() {
let currentPage = localStorage.getItem("currentPage");
console.log("loadPreviousPage. Текущее значение currentPage = " + currentPage);
loadCurrentBookPage(--currentPage);
console.log("loadPreviousPage. Новое значение currentPage = " + currentPage);
localStorage.setItem("currentPage", currentPage);
}
Почему-то [в первом блоке кода] условие
if (bookmarksArray.includes(currentPageNumber))
первый раз возвращает true:
Массив bookmarksArray = 0,1,3
Переменная currentPageNumber = 3
Страница 3 есть в закладках
Когда начинаю листать кнопками туда-сюда, сразу же возвращает false:
Массив bookmarksArray = 0,1,3
Переменная currentPageNumber = 2
Страницы 2 в закладках нет
Если я возвращаюсь на исходную страницу (3) результат опять будет false.
Чем может быть обусловлено такое поведение? Что я упустил?