使用 javascript 查找并替换迭代

find-and-replace iteration with javascript

我正在为我的网站制作一个文本编辑器,我需要一个查找和替换功能,它可以在每次出现文本时进行查找、突出显示,并且如果用户选择替换它。然后它移动到下一个事件,并做同样的事情。 我看到了这段代码:

var haystackText = "";
function findMyText(needle, replacement) {
     if (haystackText.length == 0) {
          haystackText = document.getElementById("haystack").innerHTML;
     }
     var match = new RegExp(needle, "ig");     
     var replaced = "";
     if (replacement.length > 0) {
          replaced = haystackText.replace(match, replacement);
     }
     else {
          var boldText = "<div style=\"background-color: yellow; display: inline; font-weight: bold;\">" + needle + "</div>";
          replaced = haystackText.replace(match, boldText);
     }
     document.getElementById("haystack").innerHTML = replaced;
}

但它只适用于有文本的 div,而不是文本区域,就像我有的那样,而且它发现 and/or 一次替换了所有出现的地方,而不是一个一个地遍历它们。

我怎样才能使这个工作?

如果代码使用 <Div> 标签,那么你应该使用 div 标签。只需让 div 标签可编辑即可。

试试这个:

<div contenteditable="true">This is an editable div</div>

contenteditable 属性指定元素的内容是否可编辑。