2016-07-18 41 views
0

處理一些JavaScript代碼;我想在突出顯示時更改文字。我目前找到的最接近的是:Get The Highlighted Selected Text。該解決方案的問題雖然只是獲取突出顯示爲字符串的文本,但它是一個字符串。所以我有文本,但我不能像編輯節點一樣編輯它,做innerHTML,更改字體等等。它只是一個字符串。我有一個解決方案,「工作」™,但是,是採取該字符串,然後搜索它。問題是,例如,如果我在本文中突出顯示字符串「the」,我會得到大量答案,並且無法區分它們。在javascript中獲取突出顯示的文本作爲節點

有沒有辦法將選定的文本作爲節點?

+0

你是說你想獲得所選文本所在的html元素,以便你可以對它應用某些東西? – ComputerLocus

+0

種。獲取它所包含的元素可能會包含比我想要的更多的元素。所以如果我要在這句話中突出顯示「the」,我會得到整句話,而不僅僅是。 – liljoshu

回答

1

您需要查找所選內容(window.getSelection();)並確定其範圍以確保所選文字的正確位置。然後你可以通過span-wrapping來應用樣式。 看看

http://jsfiddle.net/jme11/bZb7V/

0

你可以得到一個想法如何它從這個答案https://stackoverflow.com/a/3997896/5267669

基本上你得到的document.getSelection方法選定的文本,你刪除它,並在它的位置做了你插入你自己的內容。

例如包含文本Added with js

sel = window.getSelection(); 
if (sel.rangeCount) { 
    range = sel.getRangeAt(0); 
    range.deleteContents(); 
    var h1 = document.createElement("h1"); 
    h1.textContent = 'Added with js'; 
    range.insertNode(h1); 
} 
H1標籤更換您的選擇

您可以在此頁面上選擇任何內容,粘貼此代碼到控制檯,並選擇將用h1標籤來代替

相關問題