| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 5fd438b commit 583e0aa
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,6 +1,6 @@ | |||
| 1 | - # ЛР 1. HTML/CSS/JavaScript | ||
| 1 | + # ЛР 1. HTML/CSS | ||
| 2 | 2 | ||
| 3 | - **Цель** данной лабораторной работы - знакомство с инструментами построения пользовательских интерфейсов web-сайтов: HTML, CSS, JavaScript. В ходе выполнения работы, вам предстоит ознакомиться с кодом реализации простого калькулятора, и затем выполнить задания по варианту. | ||
| 3 | + **Цель** данной лабораторной работы - знакомство с инструментами построения пользовательских интерфейсов web-сайтов: HTML, CSS. В ходе выполнения работы, вам предстоит ознакомиться с кодом реализации простого калькулятора, и затем выполнить задания по варианту. | ||
| 4 | 4 | ||
| 5 | 5 |  | |
| 6 | 6 | ||
@@ -443,147 +443,12 @@ p.my-large-italic { | |||
| 443 | 443 | ``` | |
| 444 | 444 | ||
| 445 | 445 | ||
| 446 | - Если все выполнено верно, изображение страницы должно соответствовать требуемому. Весь код можно найти в конце методички. | ||
| 447 | - | ||
| 448 | - # Программирование логики с помощью JavaScript | ||
| 449 | - | ||
| 450 | - Язык программирования JavaScript служит основным инструментом для описания логики и интерактивности веб-страниц. В данной работе с помощью Js мы будем программировать кнопки калькулятора. | ||
| 451 | - | ||
| 452 | - Как и CSS, js-скрипт можно задать в самом HTML-документе (вложенный скрипт), либо вынести в отдельный файл и сослаться на него в HTML-файле: | ||
| 453 | - | ||
| 454 | - ```html | ||
| 455 | - <head> | ||
| 456 | - <title>калькулятор</title> | ||
| 457 | - <link rel="stylesheet" href="style.css"> | ||
| 458 | - <script type="text/javascript" src="script.js"></script> | ||
| 459 | - </head> | ||
| 460 | - ``` | ||
| 461 | - | ||
| 462 | - ### Доступ к HTML-элементам из JavaScript | ||
| 463 | - | ||
| 464 | - Самый распространенный путь доступа к HTML-элементам из скрипта - получение HTML-объекта по его идентификатору. Для этого существует метод `getElementById`: | ||
| 465 | - | ||
| 466 | - ```html | ||
| 467 | - <body> | ||
| 468 | - <p id="paragraph">Lorem Ipsum</p> | ||
| 469 | - | ||
| 470 | - <!--вложенный JS-скрипт--> | ||
| 471 | - <script> | ||
| 472 | - <!-- обращаемся к HTML-документу и ищем объект с id=paragraph --> | ||
| 473 | - element = document.getElementById("paragraph") | ||
| 474 | - | ||
| 475 | - <!-- через свойство innerHTML у полученного объекта можно изменить его содержимое--> | ||
| 476 | - element.innerHTML = "Измененный текст параграфа"; | ||
| 477 | - </script> | ||
| 478 | - </body> | ||
| 479 | - ``` | ||
| 480 | - | ||
| 481 | - Также JS предоставляет и другие методы получения элементов: | ||
| 482 | - | ||
| 483 | - ```jsx | ||
| 484 | - document.getElementsByTagName(name) // поиск элементов по тэгу | ||
| 485 | - document.getElementsByClassName(name) // поиск элементов определенного css класса | ||
| 486 | - ``` | ||
| 487 | - | ||
| 488 | - про другие способы взаимодействия с HTML-элементами из JS можно почитать [здесь](https://www.w3schools.com/js/js_htmldom.asp). | ||
| 489 | - | ||
| 490 | - ### Программирование кнопок калькулятора | ||
| 491 | - | ||
| 492 | - ```python | ||
| 493 | - // файл script.js | ||
| 494 | - | ||
| 495 | - let a = '' | ||
| 496 | - let b = '' | ||
| 497 | - let expressionResult = '' | ||
| 498 | - let selectedOperation = null | ||
| 499 | - | ||
| 500 | - // окно вывода результата | ||
| 501 | - outputElement = document.getElementById("result") | ||
| 502 | - | ||
| 503 | - // список объектов кнопок циферблата (id которых начинается с btn_digit_) | ||
| 504 | - digitButtons = document.querySelectorAll('[id ^= "btn_digit_"]') | ||
| 505 | - | ||
| 506 | - function onDigitButtonClicked(digit) { | ||
| 507 | - if (!selectedOperation) { | ||
| 508 | - if ((digit != '.') || (digit == '.' && !a.includes(digit))) { | ||
| 509 | - a += digit | ||
| 510 | - } | ||
| 511 | - outputElement.innerHTML = a | ||
| 512 | - } else { | ||
| 513 | - if ((digit != '.') || (digit == '.' && !b.includes(digit))) { | ||
| 514 | - b += digit | ||
| 515 | - outputElement.innerHTML = b | ||
| 516 | - } | ||
| 517 | - } | ||
| 518 | - } | ||
| 519 | - | ||
| 520 | - // устанавка колбек-функций на кнопки циферблата по событию нажатия | ||
| 521 | - digitButtons.forEach(button => { | ||
| 522 | - button.onclick = function() { | ||
| 523 | - const digitValue = button.innerHTML | ||
| 524 | - onDigitButtonClicked(digitValue) | ||
| 525 | - } | ||
| 526 | - }); | ||
| 527 | - | ||
| 528 | - // установка колбек-функций для кнопок операций | ||
| 529 | - document.getElementById("btn_op_mult").onclick = function() { | ||
| 530 | - if (a === '') return | ||
| 531 | - selectedOperation = 'x' | ||
| 532 | - } | ||
| 533 | - document.getElementById("btn_op_plus").onclick = function() { | ||
| 534 | - if (a === '') return | ||
| 535 | - selectedOperation = '+' | ||
| 536 | - } | ||
| 537 | - document.getElementById("btn_op_minus").onclick = function() { | ||
| 538 | - if (a === '') return | ||
| 539 | - selectedOperation = '-' | ||
| 540 | - } | ||
| 541 | - document.getElementById("btn_op_div").onclick = function() { | ||
| 542 | - if (a === '') return | ||
| 543 | - selectedOperation = '/' | ||
| 544 | - } | ||
| 545 | - | ||
| 546 | - // кнопка очищения | ||
| 547 | - document.getElementById("btn_op_clear").onclick = function() { | ||
| 548 | - a = '' | ||
| 549 | - b = '' | ||
| 550 | - selectedOperation = '' | ||
| 551 | - expressionResult = '' | ||
| 552 | - outputElement.innerHTML = 0 | ||
| 553 | - } | ||
| 554 | - | ||
| 555 | - // кнопка расчёта результата | ||
| 556 | - document.getElementById("btn_op_equal").onclick = function() { | ||
| 557 | - if (a === '' || b === '' || !selectedOperation) | ||
| 558 | - return | ||
| 559 | - | ||
| 560 | - switch(selectedOperation) { | ||
| 561 | - case 'x': | ||
| 562 | - expressionResult = (+a) * (+b) | ||
| 563 | - break; | ||
| 564 | - case '+': | ||
| 565 | - expressionResult = (+a) + (+b) | ||
| 566 | - break; | ||
| 567 | - case '-': | ||
| 568 | - expressionResult = (+a) - (+b) | ||
| 569 | - break; | ||
| 570 | - case '/': | ||
| 571 | - expressionResult = (+a) / (+b) | ||
| 572 | - break; | ||
| 573 | - } | ||
| 574 | - | ||
| 575 | - a = expressionResult.toString() | ||
| 576 | - b = '' | ||
| 577 | - selectedOperation = null | ||
| 578 | - | ||
| 579 | - outputElement.innerHTML = a | ||
| 580 | - } | ||
| 581 | - ``` | ||
| 446 | + Если все выполнено верно, изображение страницы должно соответствовать требуемому. | ||
| 582 | 447 | ||
| 583 | 448 | # Задание | |
| 584 | 449 | ||
| 585 | 450 | Вариант = (№ в списке % 3) + 1 | |
| 586 | 451 | ||
| 587 | - 1. Запрограммируйте операцию смены знака +/-, поменяйте цветовую палитру калькулятора с оранжево-серой на любую другую; | ||
| 588 | - 2. Запрограммируйте операцию вычисления процента %, сделайте фон калькулятора темным (наподобие ночной темы); | ||
| 589 | - 3. Добавьте кнопку стирания введенной цифры назад (backspace), сделайте кнопки квадратными вместо круглых. Расположить кнопку можно, например, на месте нерабочих +/- и % кнопок. | ||
| 452 | + 1. Поменяйте цветовую палитру калькулятора с оранжево-серой на любую другую; | ||
| 453 | + 2. Сделайте фон калькулятора темным (наподобие ночной темы); | ||
| 454 | + 3. Сделайте кнопки квадратными вместо круглых. | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments