我正在尝试在javascript应用中为textarea实现查找和替换功能。
我已经有了很多工作,但对于一个令人难以置信的奇怪的错误,我不知道如何解决。
基本上,50%的时间此代码按预期工作。每次运行该函数时,它都会选择我的字符串的下一个实例。然而,另外50%它只是一遍又一遍地重新选择相同的文本。
这种不一致最令人困惑。我可以重新启动应用程序,每次都有不同的工作方式。这是我的代码。我猜这可能与性能有关?有什么想法吗?
function selectNext() {
// collect variables
var findBox = document.getElementById('findBox');
var editable = document.getElementById('editable');
var txt = editable.innerText;
var strSearchTerm = findBox.value;
// find next index of searchterm, starting from current cursor position
var cursorPos = editable.selectionEnd;
var termPos = txt.indexOf(strSearchTerm, cursorPos);
// if found, select it
if (termPos != -1) {
editable.setSelectionRange(termPos, termPos + strSearchTerm.length)
} else {
// not found from cursor pos, so start from beginning
termPos = txt.indexOf(strSearchTerm);
if (termPos != -1) {
editable.setSelectionRange(termPos, termPos + strSearchTerm.length)
}
}
};