У меня есть форма, похожая на ту, в которой я сейчас пишу:
<form>
<div class="form-group">
<label for="body">Body</label>
<textarea name="body" id="body" cols="30" rows="10" class="form-control" placeholder="Your question body here"></textarea>
</div>
</form>
И у меня есть блок html, который отображает предварительный просмотр текста:
<code><div class="question-preview border-top border-bottom pt-3 pb-3" id="question-preview">
<!-- <p>Default text question</p> -->
<!-- <pre class="prettyprint">var a = 5
->
Как я могу генерировать html в режиме реального времени из textarea # body в div # question-preview? Комментарии в блоке предварительного просмотра являются примером переноса текста и кода по умолчанию. Я не могу понять, как распознать текст по умолчанию из кода. Я думал, что могу различить guish по 4 интервалам, но мой код не работает, я пытаюсь что-то вроде этого:
<code>bodyTextarea.addEventListener('keyup', function (e) {
e.preventDefault();
const lines = this.value.split(/\n/);
let code = lines
.filter((line) => {
if (/\s{4}/.test(line)) {
return line;
}
})
.reduce((accumulator, current) => {
return accumulator + current;
}, '');
// FIXME
if (!/\s{4}/.test(lines[lines.length - 1])) {
if (previewQuestionArea.querySelector('p')) {
previewQuestionArea.querySelector('p').replaceWith(`<p>${lines[lines.length - 1]}</p>`);
} else {
previewQuestionArea.innerHTML = `<p>${lines[lines.length - 1]}</p>`;
}
} else {
if (code !== '') {
previewQuestionArea.innerHTML += `<pre class="prettyprint">${code}
`; }}});
Есть идеи?