0
在我的工作中,我遇到了這個問題,在contenteditable內部,我需要替換不在DOM元素內部的文本。只是一個純文本或文本節點。我得到了window.getSelection();
的textNode,我需要替換文本。替換不在DOM元素內部的文本
我真的不想用替換或正則表達式來替換文本元素。
有人可以幫忙嗎?
示例代碼在這裏:
$('#editable').click(function($e){
let sel = window.getSelection();
if(sel.type === "Caret" && sel.focusNode.data !== undefined && $e.originalEvent.type == "click"){
\t let el = (sel.anchorNode.parentElement.childNodes.length < 2 && sel.anchorNode.parentElement !== this) ? sel.anchorNode.parentElement : false;
if(el) el.innerHTML = '<span style="color:red;">Got you!</span>';
else alert(sel.anchorNode.parentElement.innerHTML);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Example, click the text to replace:</p>
<div id="editable" contenteditable="true" style="border:1px solid #ccc; padding:4px;">You can't get me <strong id="item1">You can get me</strong> You can't get me
<div>You can't get me <strong id="item1">You can get me</strong> You can't get me</div></div>
這裏是Tryit編輯器相同的示例代碼,複製問題,如果你看中的是:https://www.w3schools.com/code/tryit.asp?filename=FKMLYB0T48VC
「我真的不想跟_replace_或正則表達式去與一個元素替換文本「。謹慎闡述? – OptimusCrime
當然,這意味着我不想從全局文本中搜索相似的文本。如果您不知道需要替換的確切文本位置,則可以在其他位置替換類似的文本。我也從我的同事那裏得到了一個很好的解決方案,我正在研究它。 –