diff --git a/index.html b/index.html index e660a61fa..ac1e595ec 100644 --- a/index.html +++ b/index.html @@ -43,64 +43,66 @@ data: new Date(2022, 1, 12, 12, 18), text: "Это будет первый комментарий на этой странице", likesCounter: 3, - isLiked: true + isLiked: true, }, { name: "Варвара Н.", data: new Date(13, 2, 22, 19, 22), text: "Мне нравится как оформлена эта страница! ❤", likesCounter: 75, - isLiked: true + isLiked: true, }, ]; - function like() { + function addLikeHandlers() { let likeButtons = document.querySelectorAll(".like-button"); let likesCounter = document.querySelectorAll(".likes-counter"); likeButtons.forEach((button) => { - button.addEventListener("click", () => { + button.addEventListener("click", (event) => { + event.stopPropagation(); let index = button.dataset.index; - if (comments[index].isLiked === true) { - comments[index].isLiked = false - comments[index].likesCounter--; - } else { - comments[index].isLiked = true - comments[index].likesCounter++; - } + if (comments[index].isLiked === true) { + comments[index].isLiked = false; + comments[index].likesCounter--; + } else { + comments[index].isLiked = true; + comments[index].likesCounter++; + } - renderComment(); + renderComments(); }); }); } - function renderComment() { - let commentElement = comments + function renderComments() { + let commentElements = comments .map((comment, index) => { - return `
  • -
    -
    ${comment.name}
    -
    ${getFormattedDate(comment.data)}
    -
    -
    -
    ${comment.text}
    -
    - -
  • `; + return `
  • +
    +
    ${comment.name}
    +
    ${getFormattedDate(comment.data)}
    +
    +
    +
    ${comment.text}
    +
    + +
  • `; }) .join(""); - commentsBox.innerHTML = commentElement; - like(); + commentsBox.innerHTML = commentElements; + addCopyCommentToFormHandlers(); + addLikeHandlers(); } - renderComment(); + renderComments(); function getFormattedDate(date) { let day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); @@ -109,7 +111,8 @@ ? "0" + (date.getMonth() + 1) : date.getMonth() + 1; let year = date.getFullYear() % 100; - let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); + let hours = + date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); return `${day}.${month}.${year} ${hours}:${minutes}`; @@ -124,20 +127,56 @@ return; } - let commentElement = {}; + let comment = {}; - commentElement.name = nameValue; - commentElement.data = new Date(); - commentElement.text = commentValue; - commentElement.likesCounter = 0; + comment.name = fixText(nameValue); + comment.data = new Date(); + comment.text = fixText(commentValue); + comment.likesCounter = 0; - comments.push(commentElement); + comments.push(comment); - renderComment(); + renderComments(); formComment.value = ""; formName.value = ""; }); + function fixText(text) { + return text + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); + } + + function humanizeText(text) { + return text + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', '"') + .replaceAll("'", "'"); + } + + function addCopyCommentToFormHandlers() { + let commentsEl = document.querySelectorAll(".comment"); + + for (let commentEl of commentsEl) { + function copyCommentToForm() { + console.log(commentEl); + let index = commentEl.dataset.id; + + formComment.value = + "Ответ на комментарий: " + + humanizeText(comments[index].text) + + " Автор: " + + humanizeText(comments[index].name); + } + + commentEl.addEventListener("click", copyCommentToForm); + } + }