使用match关键字存储JavaScript中所有出现的特定字符的行号

使用match关键字存储JavaScript中所有出现的特定字符的行号,javascript,html,textarea,Javascript,Html,Textarea,我正在跟踪一个链接,该链接存储数组中所有出现的{的行号,但只有当用户在textarea中键入时,即在按键上键入。如果我们直接将内容粘贴到textarea中,则该链接不起作用。 因此,我使用onchange和match关键字在数组中查找和存储行号 textarea内容是: Hello { The next match here line number { Bla Bla blah bla blah blah The next match here line number {

我正在跟踪一个链接,该链接存储数组中所有出现的{的行号,但只有当用户在textarea中键入时,即在按键上键入。如果我们直接将内容粘贴到textarea中,则该链接不起作用。 因此,我使用onchange和match关键字在数组中查找和存储行号

textarea内容是:

Hello {    
The next match here line number  {   
Bla Bla 
blah bla 
blah blah 
The next match here line number  {    
end textarea 
所需输出为:1 2 6

但输出显示的是最后一个数字:7

请给出正确的解决方案,告诉我这段代码有什么错误。我不想使用jquery

var-arr=[]; var c=0; 功能你好{ var str=document.getElementById'editor'。值; 如果str.match/{/{ arr[c++]=getLineNumber; } document.getElementByIdlineNo.innerHTML= 数组内容为…+arr.join“”; } 函数getLineNumber{ var ta=document.getElementByIdeditor var x=ta.value.substr0,ta.selectionStart.split\n.length; 返回x; }
您可以通过按换行符拆分并在每行中找到{的出现点来完成此操作

var-arr=[]; var c=0; 功能你好{ var str=document.getElementById'editor'。值; lines=str.split/\r?\n/; lines.forEachline,索引=>{ if line.match/{/{ arr[c++]=索引; } } document.getElementByIdlineNo.innerHTML= 数组内容为…+arr.join“”; } 使用同样处理粘贴的输入事件处理程序:document.getElementByIdeditor.addEventListenerinput,hello;