Есть <div> элемент с определенным текстом.
Как выполнить перемещение указателя к соответствующей букве <div> в ExtJS?
Пример на Javascript не работает в ExtJS:
<html> <head> <title>set cursor position N10</title> <meta http-equiv=«Content-Type» content=«text/html; charset=iso-8859-1»> <script type=«text/javascript»> function focusPackageCode(id) { var node = document.querySelector('div#' + id + 'word'); node.focus(); var textNode = node.firstChild; var caret = 10; var range = document.createRange(); range.setStart(textNode, caret); range.setEnd(textNode, caret); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } </script> </head> <body> <div id=«packagecode1word» name=«packagecode1word» contenteditable=«true»>set cursor position N10</div> <p align=«center» onClick=«focusPackageCode('packagecode1');»>Set</p> </body> </html>
Как видите функция работает в Javascript но не в ExtJS. Когда я кликаю на кнопку «Set» указатель в «<div>» перемещается к букве номер 10.
Но когда пытаюсь выполнить эту функцию в ExtJS не работает:
increaseIndex: 0,
this.increaseIndex++;
nodeScriptFunction.appendChild( doc.createTextNode( 'function focusPackageCode' + this.increaseIndex + "(id){var node = document.querySelector('div#'+id+'word');node.focus();var textNode = node.firstChild;var caret = 10;var range = document.createRange();range.setStart(textNode, caret);range.setEnd(textNode, caret);var sel = window.getSelection();sel.removeAllRanges();sel.addRange(range);}" ) );
nodeName.setAttribute('onClick','focusPackageCode' + this.increaseIndex + '(this.id);');
nodeText.setAttribute('id','packagecode' + this.increaseIndex + 'word'); nodeText.setAttribute('contenteditable','true');
Когда я кликаю на кнопку 'onClick' появляется такая ошибка:
Uncaught TypeError: Failed to execute 'setStart' on 'Range': parameter 1 is not of type 'Node'.