在 javascript 中存储特定字符所有出现的行号

Storing the line number of all the occurrence of particular character in javascript

我正在关注这个 link Find out the 'line' (row) number of the cursor in a textarea。当用户在 textarea 中写入时,我想将所有出现的“{”的行号存储在数组中。我想在它后面显示数组内容

这里是源码,我试过了:

<textarea rows="10" cols="100" id="editor" onkeypress="hello(event);" ></textarea>
<div id="lineNo"></div>

<script>

    function hello(e)
    {
        var keyp=e.charCode;
        var c=0,i;
        var arr=new Array();
        if(keyp=='123')
        {
            var arr[c++]=getLineNumber();               
        }
        for (i=0;i<arr.length;i++)
        {
            document.getElementById("lineNo").innerHTML="Array content is...   "+ arr[i];
            //document.write(arr[i] + "<br >");
        }       
    }
    function getLineNumber() {
        var textarea=document.getElementById("editor")
        var x=textarea.value.substr(0, textarea.selectionStart).split("\n").length;
        return x;
    }

</script>

但是数组内容没有显示。请告诉我代码有什么问题,如果可能的话,请告诉我一种更好的方法来存储 javascript 中所有出现的特定字符的行号并显示它。

这是你想做的事情吗:

<textarea rows="10" cols="100" id="editor" onkeypress="hello(event);" ></textarea>
<div id="lineNo"></div>
<script>
  var arr = [];
  var c = 0;
  function hello(e) {
    var keyp=e.charCode; 
    if(keyp=='123') {
      arr[c++] = getLineNumber();
    }

    document.getElementById("lineNo").innerHTML=
      "Array content is...   "+ arr.join(' ');      
  }
  
  function getLineNumber() {
    var ta=document.getElementById("editor")
    var x=ta.value.substr(0, ta.selectionStart).split("\n").length;
    console.log(x)
    return x;
  }
</script>