2016-08-15 76 views
0

我正在为我的网站制作文本编辑器,并且我需要一个查找和替换功能,可以在每次出现文本时突出显示它,并且如果用户选择,取代它。然后它转移到下一个地方,并做同样的事情。 我看到这个代码:使用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的作品,而不是一个textarea,像我有,而且,它发现和/或替换所有出现的同时,而不是一个接一个地遍历它们。

我该如何做这项工作?

回答

0

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

尝试这种情况:

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

的CONTENTEDITABLE属性指定的元素的含量是否可编辑与否。

+0

我正在使用texarea,我想使用它的'selectionStart'和'selectionEnd'属性。 – TricksfortheWeb