Предполагая, что текстовым редактором вы имеете в виду элемент с предварительно заполненным текстом, который можно редактировать, вы можете использовать атрибут contenteditable в div. При этом вы можете сохранить часть форматирования.
Как вы упомянули, я воздержусь от публикации точного кода. Вы можете взять подсказки из следующего:
Прикрепите прослушиватель событий к кнопке ADD, которая может добавить атрибут contenteditable к элементу текстового редактора в разметке
Если был <div id="text-editor">Some text here</div>
addButton.addEventListener('click', function() {
document.getElementById('text-editor').setAttribute('contenteditable', 'true');
})
При нажатии на элемент с текстом «Некоторый текст здесь» можно редактировать, как вам нравится. Нажав OK, вы можете просто удалить атрибут contenteditable
okButton.addEventListener('click', function() {
document.getElementById('text-editor').removeAttribute('contenteditable');
})
Нажатие на отмену и возврат означает, что вы должны были кэшировать более раннее состояние текстового редактора до редактирования. Итак, измените слушатель кнопки добавления
let oldState = '';
let textEditorElement = document.getElementById('text-editor');
addButton.addEventListener('click', function() {
oldState = textEditorElement.innerHTML;
textEditor.setAttribute('contenteditable', 'true');
})
А при отмене вы можете просто вернуться к oldState
,
cancelButton.addEventListener('click', function() {
textEditor.innerHTML = oldState;
textEditor.removeAttribute('contenteditable');
})
Для полноценного текстового редактора, посмотрите DraftJS