У меня есть массив строк, т. Е. {Текст: [Китай идет на Тайвань. Pandas ясно, что он назвал своих родителей двадцать один в январе,]}.
Я должен отобразить каждый элемент текстового массива в отдельном div. Я сделал эту часть. Правило отображения текста в редактируемом div содержимого:
если число строк внутри редактируемого div содержимого превышает лимит (более 2), тогда цвет отображения этой строки div должен быть красным.
, если количество символов в строке превышает ограничение, тогда 20 символов внутри редактируемого содержимого div, тогда цвет отображения этого строки должен быть красным.
Я сделал с обеими частями. Предположим, что пользователь вводит символ, который находится в позиции 22, тогда я должен обновить HTML для отображения, что 21 номер и 22 цифры символа в красном цвете. Когда я обновляю HTML, тогда определенная строка внутри контент редактируемый div теряет фокус. Как я могу восстановить этот фокус в той же точке? Этот код работает некорректно, когда пользовательский тип середины любой строки и div превышает ограничение символов.
функция, которая обновляет html:
updateCaption(event,caption,nol,noc){
debugger;
var current= document.getSelection();
var focusOffset=current.focusOffset;
var ele=event.target;
let curser;
var target=event.target.children;
for(let i=0;i<target.length;i++){
var text=target[i].innerText;
caption[i]=text;
if(i+1>nol){
target[i].style.color='red'
}
if(text.length>noc){
let char=text.substring(0,20);
let char1=text.substring(20).fontcolor('Red');
event.preventDefault();
target[i].innerHTML=char+char1;
event.preventDefault();
curser=true;
}else if(text.length<noc &&target[i].getElementsByTagName('FONT').length > 0){
target[i].getElementsByTagName('FONT')[0].color="";
}
}
if(curser){
this.placeCaretAtEnd(document.getSelection(),focusOffset,event.currentTarget)
}
}
placeCaretAtEnd(el,offset,tar) {
el=el.extentNode
if (typeof window.getSelection != "undefined"
&& typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
}
Я работаю над angular 8. введите описание изображения здесь