我正在尝试使用 JavaScript 构建编辑器。我想在按回车键时显示行数,如 1、2、3 行更改。当按下 enter 时我确实计算了换行但是问题出现了我连续按下 enter 然后换行顺序如 1,2,12 因为 keyup 事件当时不起作用因为连续按下。
我在 html 中使用 textarea
<div class="editor-flex">
<div id="editor-numbering">
<div>1</div>
</div>
<div class="editor-block">
<textarea name="text" id="editor"></textarea>
</div>
<div class="output">
Preview
</div>
</div>
main.js 文件在这里 div 是用来存储新行的
let editor = document.getElementById("editor")
let editorNumbering = document.querySelector('#editor-numbering')
let len =1;
editor.addEventListener('keyup', (event) => {
// console.log(editor.value)
let lenNew = editor.value.split('\n').length //count line change
console.log(len)
if(len!=lenNew)
{
let div = document.createElement('div')
div.textContent = len+1
console.log(div)
editorNumbering.append(div)
}
len = lenNew
console.log(len)
})
预期的结果是连续的行数,就像在显示结果 1、2、3 的任何其他编辑器中一样,当行更改时连续或按回车键
最佳答案
我不知道不断按下回车键是什么意思?也许,您可以使用 keydown
事件代替 keyup
:
let editor = document.getElementById("editor")
let editorNumbering = document.querySelector('#editor-numbering')
let len =1;
editor.addEventListener('keydown', (event) => {
// console.log(editor.value)
let lenNew = editor.value.split('\n').length //count line change
//console.log(len)
if(len!=lenNew)
{
let div = document.createElement('div')
div.textContent = len+1
//console.log(div)
editorNumbering.append(div)
}
len = lenNew
//console.log(len)
})
<textarea id="editor"></textarea>
<div id="editor-numbering"></div>
关于javascript - 在 JavaScript 中连续按下回车键时编辑器没有显示正确的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55719748/