簡體   English   中英

JavaScript / jQuery getSelection突出顯示合並span html元素

[英]JavaScript / jQuery getSelection Highlight merging the span html element

 function highlight_text(sel) { span = htmlSpanHlt(); if (sel.getRangeAt) { range = sel.getRangeAt(0); } span.appendChild(range.extractContents()); range.insertNode(span); } function htmlSpanHlt() { element = document.createElement("span"); element.setAttribute('class', 'hlt'); return element; } 
 .hlt { background: yellow; } 
 <div class="highlight"> <p> <span class="hlt">Lorem</span> ipsum dolor sit amet, zril accusata postulant at ius. Dicat etiam luptatum ea pri. Duo docendi vulputate dissentiet ut, tollit bonorum duo eu. Maiorum adolescens scriptorem usu eu, sit idque facer causae ei. Choro nostrum at pro, sumo essent suscipiantur pri ex. Quo case veritus definiebas eu, sit postulant dissentias ei.<br> <br> Mel cu porro decore, cum et simul recteque inciderint. His ne omnes sententiae, ut omittantur dissentiet accommodare sed. Pro minim necessitatibus ne, no malis integre quo. Sed utroque molestiae interpretaris ne. Oportere indoctum at has, te sale semper eum, ea nam vitae dissentiet. </p> </div> 

單詞“Lorem”的類名為“hlt”,已經突出顯示。 我想要的是:如果我想要突出另一個文本,包括“Lorem”這個詞已經突出顯示了w / c。 我想合並他們的span html元素。 示例:如果我突出顯示“Lorem”一詞旁邊的“ipsum”,並且我還包含“Lorem”,結果將是Lorem Ipsum。 有人能幫我嗎? 感謝你。

這個怎么樣?

 function highlight_text(sel) { var hlt_element = document.getElementsByClassName('hlt')[0]; if (!hlt_element || sel.containsNode(hlt_element,true)) { add_hlt_element(sel); } } function add_hlt_element(sel) { var element = document.createElement("span"); var range = sel.getRangeAt(0); element.setAttribute('class', 'hlt'); element.innerHTML = sel.toString().replace(/(?:\\r\\n|\\r|\\n)/g, '<br />\\n'); range.deleteContents(); range.insertNode(element); var highlight_div = document.getElementsByClassName("highlight")[0]; highlight_div.innerHTML = highlight_div.innerHTML.replace('</span><span class="hlt">',''); } window.onmouseup = function() { var sel = window.getSelection(); highlight_text(sel); } 
 .hlt { background: yellow; } 
 <div class="highlight"> <p> Lorem ipsum dolor sit amet, zril accusata postulant at ius. Dicat etiam luptatum ea pri. Duo docendi vulputate dissentiet ut, tollit bonorum duo eu. Maiorum adolescens scriptorem usu eu, sit idque facer causae ei. Choro nostrum at pro, sumo essent suscipiantur pri ex. Quo case veritus definiebas eu, sit postulant dissentias ei.<br> <br> Mel cu porro decore, cum et simul recteque inciderint. His ne omnes sententiae, ut omittantur dissentiet accommodare sed. Pro minim necessitatibus ne, no malis integre quo. Sed utroque molestiae interpretaris ne. Oportere indoctum at has, te sale semper eum, ea nam vitae dissentiet. </p> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM