Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.04.2020, 23:58
Интересующийся
Отправить личное сообщение для Rudman Посмотреть профиль Найти все сообщения от Rudman
 
Регистрация: 25.03.2020
Сообщений: 17

Редактор текста с помощью модели DOM
Dom-модель позволяющая редактировать текст
Как сделать чтоб при выборе флажка значение применялось к тексту

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="css/style.css">
	<title>Text format</title>
</head>
<body>
	<form>
	<h3>Введите текст и выберите стиль</h3>
	<div class="continer">
		<p><input type="checkbox" value="Bold">Bold</p>
		<p><input type="checkbox" value="Underline">Underline</p>
		<p><input type="checkbox" value="Italics">Italics</p>
		<p><input type="radio" name="pos" value="Left">Left</p>
		<p><input type="radio" name="pos" value="Right">Right</p>
		<p><input type="radio" name="pos" value="Justify">Justify</p>
		<textarea cols="30" rows="10" id="text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa commodi aut, eaque, vitae assumenda, pariatur illo modi ipsam quis totam, itaque. Distinctio modi illum, consectetur quam labore incidunt dicta adipisci?</textarea>
	</form>
		<button>Show text</button>
		<hr style="margin-top: 10px;">
	</div>
	<script src="js/script.js"></script>
</body>
</html>


Что то пытался сделать:
function fChange(){
	let prop = this.input.getAttribute('value');

 	if(this.getAttribute('type') == 'checkbox')
		objBox[prop] = this.value + "<b>";
	else
		objBox[prop] = this.value;

	let text = document.getElementById('text');
	for(let key in objBox){
		text.style.setProperty(key, objBox[key]);
		console.log(key+ ":" + objBox[key] + ";");
	}
}
Ответить с цитированием
  #2 (permalink)  
Старый 21.04.2020, 02:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Rudman,
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Text format</title>
</head>
<body>
    <form onsubmit="fChange(event,this)">
    <h3>Введите текст и выберите стиль</h3>
    <div class="continer">
        <label><input type="checkbox" value="font-weight:bold;">Bold</label>
        <label><input type="checkbox" value="text-decoration:underline;">Underline</label>
        <label><input type="checkbox" value="font-style:italic;">Italic</label>
        <label><input type="radio" name="pos" value="text-align:left;">Left</label>
        <label><input type="radio" name="pos" value="text-align:right;">Right</label>
        <label><input type="radio" name="pos" value="text-align:justify">Justify</label>
        <textarea cols="30" rows="10" id="text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa commodi aut, eaque, vitae assumenda, pariatur illo modi ipsam quis totam, itaque. Distinctio modi illum, consectetur quam labore incidunt dicta adipisci?</textarea>

        <button>apply the settings</button>
        <hr style="margin-top: 10px;">
    </div>
    </form>
    <script>
    function fChange(event,form){
    event.preventDefault();
    let property = "";
    form.querySelectorAll(":checked").forEach(({value}) => property +=value);
    text.style.cssText = property;
    }

    </script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 21.04.2020, 06:06
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сообщение от Rudman
Редактор текста с помощью модели DOM
DOM - это не через textarea, а через div с параметром contenteditable:

<html><body><div contenteditable="true" style="width:70ex; height:9ex; border:2px black solid; padding:4px;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa commodi aut, eaque, vitae assumenda, pariatur illo modi ipsam quis totam, itaque. Distinctio modi illum, consectetur quam labore incidunt dicta adipisci?</div>
 <label><input type="checkbox" value="font-weight:bold;">Bold</label>
 <label><input type="checkbox" value="text-decoration:underline;">Underline</label>
 <label><input type="checkbox" value="font-style:italic;">Italic</label>
 <label><input type="radio" name="pos" value="text-align:left;">Left</label>
 <label><input type="radio" name="pos" value="text-align:right;">Right</label>
 <label><input type="radio" name="pos" value="text-align:justify">Justify</label>
</body></html>
Ответить с цитированием
  #4 (permalink)  
Старый 21.04.2020, 08:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

https://developer.mozilla.org/ru/doc...itable_content
Ответить с цитированием
  #5 (permalink)  
Старый 21.04.2020, 14:38
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Белый шум, а то, что в это поле можно вставить весь форум... или кнопки из-под поля... Это тоже входит в планы? Я к тому, что в программах редактирования текстов обычно нельзя скопировать интерфейс программы, чтобы его вставить в поле и редактировать. Это очень странно, если такое возможно (как у вас)!

laimas, a lot of laughs, по твоей ссылке можно найти редактор, в котором можно выделить кнопки и вставить их для редактирования.

Последний раз редактировалось Malleys, 21.04.2020 в 14:45.
Ответить с цитированием
  #6 (permalink)  
Старый 21.04.2020, 15:06
Интересующийся
Отправить личное сообщение для Rudman Посмотреть профиль Найти все сообщения от Rudman
 
Регистрация: 25.03.2020
Сообщений: 17

рони, то что нужно, а можно сделать чтоб значения применялись без нажатия на кнопку?
Ответить с цитированием
  #7 (permalink)  
Старый 21.04.2020, 15:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Rudman,
Сообщение от рони
onsubmit
oninput
Ответить с цитированием
  #8 (permalink)  
Старый 21.04.2020, 15:22
Интересующийся
Отправить личное сообщение для Rudman Посмотреть профиль Найти все сообщения от Rudman
 
Регистрация: 25.03.2020
Сообщений: 17

рони, cпасибо
Ответить с цитированием
  #9 (permalink)  
Старый 21.04.2020, 15:38
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сообщение от Malleys
Белый шум, а то, что в это поле можно вставить весь форум... или кнопки из-под поля... Это тоже входит в планы? Я к тому, что в программах редактирования текстов обычно нельзя скопировать интерфейс программы, чтобы его вставить в поле и редактировать.
А вы предлагаете сделать всю страницу некопируемой / невыделяемой?

Сообщение от Malleys
Это очень странно, если такое возможно (как у вас)!
Вы как будто интернет впервые увидели и никогда не пользовались формой ответа на данном форуме...

К тому же, это был ответ (далеко не исчерпывающий) на конкретный вопрос на форуме, а не продакшен-решение.
Ответить с цитированием
  #10 (permalink)  
Старый 21.04.2020, 16:37
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Белый шум, вы можете задавать ещё много философских и метафизических вопросов... Однако у рони всё в порядке! И его даже похвалили!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью скрипта высчитать ширину полосы прокрутки? LADYX Элементы интерфейса 35 13.11.2017 12:50
Визуальный редактор текста sean88 Элементы интерфейса 8 26.09.2014 17:01
Самый простой редактор текста SlafkoCe Events/DOM/Window 2 14.06.2013 23:32
Новый элемент отсутствует в DOM модели StrSprut jQuery 4 19.09.2011 12:50
WYSIWYG редактор текста HTML страницы на javascript Дмитри Чижиков Ваши сайты и скрипты 4 14.09.2009 17:05