Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2018, 19:12
Аспирант
Отправить личное сообщение для garrip91 Посмотреть профиль Найти все сообщения от garrip91
 
Регистрация: 07.10.2018
Сообщений: 75

Проблемы с составлением синтаксиса
Недавно я начал последовательно изучать языки программирования и в данный момент мне от моего "Учителя" (я бы даже сказал "Сенсея", так как он человек с профильным образованием и действительно обладает соответствующими познаниями на должном уровне) (в целях проверки учебного прогресса) поступило задание "Создать web-страницу с полем ввода информации, которая будет отображаться в новом элементе (пункте) списка (в моём случае под полем ввода) при нажатии на кнопку "Добавить" (в моём случае "Add")".

В качестве идеального образца мы с ним выбрали некий "TO-DO-LIST" с источника: w3schools.com/howto/howto_js_todolist.asp .


Выполняя данное задание, я решил подойти к нему немного творчески: изменил цвета так, как мне больше нравится. Попытался содержание страницы оформить на русском языке, но почему-то указанная мной в синтаксисе самой страницы кодировка "utf-8" почему-то не сработала (первый раз я с таким сталкиваюсь, кстати), в связи с чем мне пришлось все выбранные слова и фразы перевести на английский язык с помощью google-переводчика.

Более того, я пытался внести исправления в js-синтаксис для того, чтобы добавлять элемент(-ы) списка, помимо способа с нажатием на кнопку "Add", путём нажатия на клавишу "Enter" на клавиатуре... Тоже не вышло к сожалению((

Также я решил добавить в левой части каждого элемента списка специальный символ "Наконечник стрелы" при наведении курсора на соответствующий элемент (здесь речь идёт о CSS-синтаксисе). Вроде как получилось, но с одним очень существенным недостатком:
"Наконечник стрелы" теперь отображается поверх другого символа (последний изначально был использован с поворотом на 45 градусов по часовой стрелке для отображения галочки при нажатии на элемент(-ы) списка).


К настоящему прилагаю следующие ссылки:

1. https://ru.files.fm/u/tghpw3sx (ссылка на 3 моих файла в файлообменнике ("index.html", "style.css" и "external.js"));

(на всякий случай)
2. https://ru.files.fm/u/ncjc74s7 (ссылка на 10 моих скриншотов в том же файлообменнике ("1. Исходный вид страницы.jpg", "2. Вид страницы с отображением проблемы с отметками при наведении.jpg", "3. Вид страницы при попытке добавления пункта нажатием клавиши "Enter"", "4. html-синтаксис.jpg", "5. 1-я часть CSS-синтаксиса.jpg", "6. 2-я часть CSS-синтаксиса.jpg", "7. 3-я часть CSS-синтаксиса.jpg", "8. 4-я часть CSS-синтаксиса.jpg", "9. 1-я часть JS-синтаксиса.jpg" и "10. 2-я часть JS-синтаксиса.jpg")).

Последний раз редактировалось garrip91, 07.10.2018 в 19:15.
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2018, 21:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

garrip91,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>to-do list</title>
<style type="text/css">
* {
    box-sizing: border-box;
}
ul {
    margin: 0;
    padding: 0;
}
ul li {
    cursor: pointer;
    position: relative;
    padding: 12px 8px 12px 40px;
    background: #eee;
    font-size: 18px;
    transition: .2s;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
ul li:nth-child(even) {
    background: yellow;
}
ul li:nth-child(odd) {
    background: sandybrown;
}
ul li:hover {
    background: magenta;
}
ul li:hover::before {
    content: '\27A4';
    position: absolute;
    top: 10px;
    left: 16px;
    height: 15px;
    width: 7px;
}
ul li.checked {
    background: lime;
    color: #fff;
    text-decoration: underline;
}
ul li.checked::before {
    content: '';
    position: absolute;
    border-color: #fff;
    border-style: solid;
    border-width: 0 2px 2px 0;
    top: 10px;
    left: 16px;
    transform: rotate(45deg);
    height: 15px;
    width: 7px;
}
.close {
    position: absolute;
    right: 0;
    top: 0;
    padding: 12px 16px 12px 16px;
}
.close:hover {
    background-color: red;
    color: white;
}
.header {
    background-color: aqua;
    padding: 30px 40px;
    color: purple;
    text-align: center;
}
.header:after {
    content: '';
    display: table;
    clear: both;
}
input {
    margin: 0;
    border: none;
    border-radius: 0;
    width: 75%;
    padding: 10px;
    float: left;
    font-size: 16px;
}
.addBtn {
    padding: 10px;
    width: 25%;
    background: #d9d9d9;
    color: #555;
    float: left;
    text-align: center;
    font-size: 16px;
    cursor: pointer;
    transition: .3s;
    border-radius: 0;
}
.addBtn:hover {
    background-color: #bbb;
}
</style>
</head>
<body>
<div id="myDIV" class="header">
  <h1>Tips on how to correctly create your to-do list:</h1>
  <input type="text" id="myInput" placeholder="Here you can offer your option(as a recommendation)...">
  <span class="addBtn">Add</span>
</div>

<ul id="myUL">
  <li>Choose a carrier at a distance of the hand, which should often "loom" before your eyes</li>
  <li>Select the same time for its creation: morning or evening</li>
  <li>Make up for the current day only</li>
  <li>Prioritize</li>
  <li>Keep a "list of ideas"</li>
  <li>Supervise the "kidnappers of time"</li>
  <li>Be realistic</li>
  <li>Plan a vacation</li>
  <li>Do not "execute" yourself ...</li>
</ul>
<script>
var list = document.getElementById("myUL");
var input = document.getElementById("myInput");
var addBtn = document.querySelector(".addBtn");


function createClose(parent) {
    var span = document.createElement("SPAN");
    var txt = document.createTextNode("\u00d7");
    span.className = "close";
    span.appendChild(txt);
    span.addEventListener("click", function() {
        list.removeChild(parent)
    }, false);
    parent.appendChild(span)
}
var myNodelist = document.getElementsByTagName("LI");
var i;
for (i = 0; i < myNodelist.length; i++) createClose(myNodelist[i]);
list.addEventListener("click", function(ev) {
    if (ev.target.tagName === "LI") ev.target.classList.toggle("checked")
}, false);

function newElement() {
    var li = document.createElement("li");
    var inputValue = input.value;
    var t = document.createTextNode(inputValue);
    li.appendChild(t);
    if (inputValue === "") alert("You must write something!");
    else {
        list.appendChild(li);
        createClose(li)
    }
    input.value = ""
}
input.addEventListener("keypress", function(ev) {
    if (ev.keyCode === 13) newElement()
}, false);
addBtn.addEventListener("click", newElement, false);

</script>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со слайдером. Shupamen Работа 1 15.12.2013 00:12
проблемы с PagingToolbar serg3091 ExtJS 4 26.06.2013 09:33
Проблемы при установке модулей node.js tadjik1 AJAX и COMET 1 18.03.2012 02:20
Решение проблемы с отображением элементов на странице mozyr Javascript под браузер 17 13.01.2012 02:34
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37