Javascript.RU

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

Радиокнопки меняющие стиль текста в сообщении
Доброго времени суток уважаемые форумчане. Задача над которой работаю: «Создать html-страницу с формой для ввода стилизованного текста. После заполнения формы, вывести текст на экран в соответствии с указанными стилями.» (Стили шрифтов: Bold, Underline, italics, Left, Right, Justify или по своему усмотрению. Пользоваться html, css, javascript). Помогите пожалуйста разобраться с JS, не могу заставить радиокнопки менять стили шрифтов для набранного (нового) сообщения.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="messages-container">
    </div>
    <div class="footer">
        <h2>Add new message</h2>
        <form action="">
            <div>
                <label for="userText">Your message:</label>
                <textarea name="userText" id="userText" cols="30" rows="10"></textarea>
            </div>  
            <input type="submit" value="send" id="button">
            <div class="radio">
                <p><input type="radio" value="bold" name="fontStyle" checked>bold</p>
                <p><input type="radio" value="underline" name="fontStyle">underline</p>
                <p><input type="radio" value="italics" name="fontStyle">italics</p>
                <p><input type="radio" value="left" name="fontStyle">left</p>
                <p><input type="radio" value="right" name="fontStyle">right</p>
                <p><input type="radio" value="justify" name="fontStyle">justify</p>
            </div>
        </form>
    </div>
    <script src="script.js"></script>
</body>
</html>


.message {
    margin: 20px;
    padding: 10px;
    border: 1px solid black;
}

.message-header {
    display: flex;
    justify-content: space-between;
}

.footer {
    position: fixed;
    bottom: 0;
}

.radio {
    display: flex;
}


let messages = document.querySelector(".messages-container");
let userText = document.querySelector("#userText");
let button = document.querySelector("#button");

button.addEventListener('click', function(event) {
    event.preventDefault();
    let message = document.createElement('div');
    message.classList.add('message');
    let messageContainer = document.createElement('p');
    messageContainer.classList.add('text');
    messageContainer.innerText = userText.value;
    message.appendChild(messageContainer);
    messages.appendChild(message);
})
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2022, 12:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

underground,
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        .message {
            margin: 20px;
            padding: 10px;
            border: 1px solid black;
        }

        .message-header {
            display: flex;
            justify-content: space-between;
        }

        .footer {
            position: fixed;
            bottom: 0;
        }

        .radio {
            display: flex;
        }

        .text.bold {
            font-weight: bold;
        }

        .text.italics {
            font-style: italic;
        }

        .text.left {
            text-align: left;
        }

        .text.right {
            text-align: right;
        }

        .text.justify {
            text-align: justify;
        }

        .text.underline {
            text-decoration: underline;
        }
    </style>
</head>

<body>
    <div class="messages-container">
    </div>
    <div class="footer">
        <h2>Add new message</h2>
        <form action="">
            <div>
                <label for="userText">Your message:</label>
                <textarea name="userText" id="userText" cols="30" rows="10"></textarea>
            </div>
            <input type="submit" value="send" id="button">
            <div class="radio">
                <p><input type="radio" value="bold" name="fontStyle" checked>bold</p>
                <p><input type="radio" value="underline" name="fontStyle">underline</p>
                <p><input type="radio" value="italics" name="fontStyle">italics</p>
                <p><input type="radio" value="left" name="fontStyle">left</p>
                <p><input type="radio" value="right" name="fontStyle">right</p>
                <p><input type="radio" value="justify" name="fontStyle">justify</p>
            </div>
        </form>
    </div>
    <script>
        let messages = document.querySelector(".messages-container");
        let form = document.querySelector(".footer form");
        form.addEventListener('submit', function(event) {
            event.preventDefault();
            let txt = this.userText.value;
            this.userText.value = "";
            if (!txt.trim()) return;
            let message = document.createElement('div');
            message.classList.add('message');
            let messageContainer = document.createElement('p');
            messageContainer.classList.add('text');
            messageContainer.textContent = txt;
            message.appendChild(messageContainer);
            messages.appendChild(message);
            messageContainer.classList.add(this.fontStyle.value);
        })
    </script>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2022, 14:54
Интересующийся
Отправить личное сообщение для underground Посмотреть профиль Найти все сообщения от underground
 
Регистрация: 03.08.2022
Сообщений: 10

Большое спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2022, 16:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

underground, используй label вместо p, а то неудобно нажимать.)
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отследить данные, из поля ввода Блондинка Общие вопросы Javascript 41 30.04.2021 16:55
как убрать кнопку, чтобы скрипт срабатывал при потере фокуса поля ввода? Блондинка Общие вопросы Javascript 24 26.04.2021 16:57
Найти все блоки текста между символами и запомнить их индексы Arhitector Общие вопросы Javascript 7 20.08.2018 00:33
Как с помощью скрипта высчитать ширину полосы прокрутки? LADYX Элементы интерфейса 35 13.11.2017 12:50
Как повторять css стиль для динамического текста? IstonRU (X)HTML/CSS 2 24.01.2013 23:58