Estaba aprendiendo la API de selección de javascript.info . Este es el código en el que he estado trabajando.
<textarea id="area" style="width:80%;height:60px"> Selecting in this text updates values below. Selecting in this text updates values below. If nothing is selected, or we use equal start and end in setRangeText, then the new text is just inserted, nothing is removed. </textarea> <br> From <input id="from" disabled> – To <input id="to" disabled> <script> area.onselect = function() { from.value = area.selectionStart; to.value = area.selectionEnd; }; </script>.Podemos seleccionar cualquier palabra del área de texto y generará el número de índice correspondiente.
El problema es que el rango comienza desde cero (comienzo de todo el texto) y no desde una nueva línea. ¿Puedo hacer que cuando seleccione una palabra en una nueva línea, comience desde el índice 0 (inicio de esa línea, hasta la selección)
<textarea id="area" style="width:80%;height:60px"> Selecting in this text updates values below. Selecting in this text updates values below. If nothing is selected, or we use equal start and end in setRangeText, then the new text is just inserted, nothing is removed. </textarea>En este ejemplo, "nada" es una palabra en la línea 3 con el número de índice 1. Pero en el ejemplo pegado aquí , "nada" tiene un número de índice de 93 a 100. Aquí vemos que el índice se inicia desde el inicio de ese archivo y no desde el inicio de la línea 3, esperaba la palabra "nada" en la línea 3 tener índice número-1 e índice-0 para la palabra "si".
Intenté dividir el área de texto y establecer area.selectionEnd="\n" pensando que ahora el índice comenzará en cero desde la siguiente línea nueva. Pero no funciona. También sé que selectionStart=RANGE y area.selectionEnd=RANGE también toman rango. Pero no estoy seguro de cómo usarlo en mi situación.