diff --git "a/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/1 \321\202\320\265\320\272\321\201\321\202 \320\262\320\274\320\265\321\201\321\202\320\276 \320\272\320\260\321\200\321\202\320\270\320\275\320\272\320\270/app.js" "b/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/1 \321\202\320\265\320\272\321\201\321\202 \320\262\320\274\320\265\321\201\321\202\320\276 \320\272\320\260\321\200\321\202\320\270\320\275\320\272\320\270/app.js"
new file mode 100644
index 0000000..bb2a0a4
--- /dev/null
+++ "b/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/1 \321\202\320\265\320\272\321\201\321\202 \320\262\320\274\320\265\321\201\321\202\320\276 \320\272\320\260\321\200\321\202\320\270\320\275\320\272\320\270/app.js"
@@ -0,0 +1,80 @@
+"use strict";
+// 1. получите все кнопки и сохраните в переменную
+let buttons = document.querySelectorAll("button");
+// 1.1 затем проитерируйтесь по кнопкам и каждой из
+// них добавьте обработчик клика - функцию handleClick
+for (let index = 0; index < buttons.length; index++) {
+ buttons[index].addEventListener("click", function (clickedButtonEvent) {
+ handleClick(clickedButtonEvent);
+ });
+}
+
+/**
+ * Функция обрабатывает клик по кнопке в карточке товара и попеременно вызывает
+ * функции для показа или скрытия текста о товаре.
+ * @param {MouseEvent} clickedButtonEvent
+ */
+function handleClick(clickedButtonEvent) {
+ // 2. из объекта события получите ссылку на .product и
+ // сохраните в переменную:
+ // const cardNode = ;
+ const cardNode = clickedButtonEvent.target.parentNode;
+ // 3. создайте литерал объекта со следующими свойствами:
+ const card = {
+ wrap: cardNode, // здесь элемент с классом .product
+ img: cardNode.childNodes[3], // здесь картинка внутри .product
+ productName: cardNode.childNodes[1], // здесь .productName, который внутри .product
+ button: cardNode.childNodes[5], // здесь button, который внутри .product
+ };
+
+ // 4. получаем текст на кнопке, которая внутри .product
+ let buttonText = card.button.innerText;
+ if (buttonText == "Подробнее") {
+ // 4.1 проверяем равняется ли этот текст строке "Подробнее"
+ // 4.2 если да, то передаем объект card в функцию showMoreText
+ showMoreText(card);
+ } else if (buttonText == "Отмена") {
+ // 4.3 проверяем равняется ли текст на кнопке строке "Отмена"
+ // 4.4 если да, то передаем объект card в функцию hideMoreText
+ hideMoreText(card);
+ }
+}
+
+/**
+ * Функция скрывает текст с описанием товара.
+ * @param {Object} card
+ * @param {HTMLDivElement} card.wrap
+ * @param {HTMLImageElement} card.img
+ * @param {HTMLDivElement} card.productName
+ * @param {HTMLButtonElement} card.button
+ */
+function hideMoreText(card) {
+ // 5. картинке внутри .product ставим стиль display: block
+ card.img.style.display = "block";
+ // 5.1 внутри .product находим элемент с классом .desc и удаляем его
+ document.querySelector(".desc").remove();
+ // 5.2 кнопке, которая внутри .product ставим текст "Подробнее"
+ card.button.innerText = "Подробнее";
+}
+
+/**
+ * Функция показывает текст с описанием товара.
+ * @param {Object} card
+ * @param {HTMLDivElement} card.wrap
+ * @param {HTMLImageElement} card.img
+ * @param {HTMLDivElement} card.productName
+ * @param {HTMLButtonElement} card.button
+ */
+function showMoreText(card) {
+ // 6. картинке внутри .product ставим display: none
+ card.img.style.display = "none";
+
+ // 6.1 сохраняем произвольный текст в переменную
+ let randomTetx =
+ "Lorem ipsum donec, commodo quam maecenas, molestie auctor metus — vitae leo auctor sagittis mattis.";
+ let divDesc = '
+ Сделайте, чтобы при клике по кнопке, вместо картинки над этой кнопкой
+ появлялся какой-нибудь текст.
+
+
+
+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum sapiente suscipit aut? Veniam perspiciatis esse nesciunt ipsum numquam harum velit cumque libero provident voluptatibus iste, alias minus mollitia magni beatae dolor sunt accusantium quidem ipsa exercitationem repellendus reiciendis eaque? Iusto veritatis harum illo tenetur quam explicabo temporibus eum odit, reprehenderit unde maxime sequi incidunt atque beatae accusamus vero officiis dignissimos quasi libero ex ducimus labore asperiores iure. Unde id pariatur eius! Reiciendis similique aperiam quo consequuntur explicabo, enim, reprehenderit aspernatur, vel magni dolor voluptatem maiores quis quam odit deserunt eaque nemo autem optio? Reprehenderit cupiditate nisi nostrum exercitationem adipisci, repudiandae odio ab temporibus dolores, sunt repellat inventore ad fugiat praesentium debitis ipsam deleniti eius eligendi, nobis delectus doloremque mollitia? Quisquam sapiente similique officia officiis laudantium deserunt accusantium alias perspiciatis dolore illum. Rem blanditiis, optio exercitationem ipsam hic laudantium accusamus officiis iste sequi totam ullam, quam sunt eos a commodi modi excepturi! Ex earum deserunt possimus hic inventore sint impedit numquam veritatis harum tempore aut, velit quae maxime aliquid optio consequuntur quam dignissimos explicabo nam fugit temporibus iste aspernatur quisquam. In fugiat aut qui eaque? Aliquam consectetur minus ipsum numquam. Rerum illum illo sit repellat expedita doloribus excepturi nobis nihil! Ratione asperiores reprehenderit velit natus, sunt est, non suscipit impedit culpa dolore molestiae commodi. Dolorem reprehenderit eius, hic similique vel ullam eum eveniet asperiores aspernatur dicta neque nostrum nam quo! Dolorum fugit nobis id cum laborum magnam. Qui dolor, consectetur provident et ea quae dolore necessitatibus assumenda beatae hic odit molestias saepe mollitia! Suscipit quae molestias iure at laboriosam, similique necessitatibus ipsam dolores perspiciatis! Soluta atque vero at, sit fugiat vitae nulla sapiente accusantium, quas maxime nesciunt tempora sed reprehenderit ut. Illum, tenetur ipsam corporis reiciendis similique harum sequi quas voluptate tempore, perferendis dolore, suscipit est incidunt expedita rerum quo. Consectetur ab placeat libero tempora. Beatae soluta nihil dolore? Laboriosam itaque iste hic modi, natus adipisci totam porro voluptatibus asperiores amet consequatur quidem quasi maxime repellat error delectus sapiente. Repellendus, totam, illo rerum non enim assumenda corporis fuga molestias quibusdam recusandae a amet accusantium at, velit adipisci quas mollitia eligendi alias est voluptatum temporibus beatae molestiae? Dolores pariatur quisquam excepturi hic dignissimos illum voluptas, asperiores deserunt quos a quod culpa autem nemo veniam molestiae maiores fuga provident quam quibusdam tenetur repellat necessitatibus deleniti. Earum itaque similique magni suscipit voluptatum, soluta voluptate ratione quis vero nesciunt pariatur perferendis, odit quaerat, doloribus quia.
+
`;
+}
\ No newline at end of file
diff --git "a/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/2 \320\277\320\276\320\264\320\263\321\200\321\203\320\267\320\272\320\260 \320\277\320\276\321\201\321\202\320\276\320\262/style.css" "b/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/2 \320\277\320\276\320\264\320\263\321\200\321\203\320\267\320\272\320\260 \320\277\320\276\321\201\321\202\320\276\320\262/style.css"
new file mode 100644
index 0000000..31180e9
--- /dev/null
+++ "b/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/2 \320\277\320\276\320\264\320\263\321\200\321\203\320\267\320\272\320\260 \320\277\320\276\321\201\321\202\320\276\320\262/style.css"
@@ -0,0 +1,25 @@
+body {
+ margin: 0;
+}
+
+.container {
+ width: 1000px;
+ margin: 0 auto;
+ min-height: 100vh;
+ box-shadow: 0 0 10px gray;
+ padding: 15px;
+ box-sizing: border-box;
+}
+
+img {
+ float: left;
+ margin-right: 15px;
+}
+
+.post {
+ overflow: hidden;
+ text-align: justify;
+ padding-bottom: 10px;
+ margin-bottom: 10px;
+ border-bottom: 1px solid gray;
+}
diff --git "a/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/3 \321\210\320\260\321\205\320\274\320\260\321\202\320\275\320\260\321\217 \320\264\320\276\321\201\320\272\320\260/chess.html" "b/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/3 \321\210\320\260\321\205\320\274\320\260\321\202\320\275\320\260\321\217 \320\264\320\276\321\201\320\272\320\260/chess.html"
new file mode 100644
index 0000000..8ebf5a5
--- /dev/null
+++ "b/hw8/1 \321\203\321\200\320\276\320\262\320\265\320\275\321\214/3 \321\210\320\260\321\205\320\274\320\260\321\202\320\275\320\260\321\217 \320\264\320\276\321\201\320\272\320\260/chess.html"
@@ -0,0 +1,17 @@
+
+
+
+
+