2013-03-01 35 views
1

是否可以在Javascript的幫助下選擇文本(就像用戶在瀏覽器中通過HTML字詞拖動鼠標一樣)?通過Javascript選擇HTML表格中的文本?

我有一些JS代碼爲用戶的字符串輸入搜索HTML表格。然後,如果找到該代碼,我會選擇/專注於此單詞。

var targetTable = document.getElementById("accountTable"); 

for (var rowIndex = 1 + searchStart; rowIndex < targetTable.rows.length; rowIndex++) 
{ 
    var rowData = ''; 
    rowData = targetTable.rows.item(rowIndex).cells.item(0).textContent; 
    if (rowData.indexOf(str) != -1) 
    { 
       //select word and focus on it in user's browser? 
    } 
} 
+0

你能澄清一下你想要發生什麼嗎? – RyanDawkins 2013-03-01 20:50:07

+0

當然。想象一下,你在網上衝浪,你想複製一個詞。你首先必須用鼠標選擇單詞。這是我所追求的效果 - 我希望用戶的輸入字符串在HTML表格中「被選中」(或以某種方式突出顯示)。 – VeePee 2013-03-01 20:54:49

+0

selectionStart/End只能在可編輯的文本上工作(即使僅使用即可使其停止工作。如果從元素中獲取文本並使用圍繞要顯示爲選定文本的CSS樣式重新格式化文本,您需要執行什麼操作) – Offbeatmammal 2013-03-01 21:02:33

回答

0

您可以使用相同的字符串替換找到的字符串,但在具有特定類的範圍內。

例如,如果搜索詞是「阿爾法」:

<td>The alphabet is long.</td> 
<td>The <span class="highlighted">alpha</span>bet is long.</td> 

的當搜索改變你就必須恢復所有突出跨度回純文本。

如果你想實際使用選擇瀏覽器的選擇有這裏討論一個有限的方式:Programmatically select text in a contenteditable HTML element?

0

爲了通過將鼠標懸停突出的元素,要做到這一點最簡單的方法是使用CSS。

例子:

你的html代碼:

<p id="test">Word</p> 

CSS文件:

#word:hover{ color: #FFFF00; } 

將由徘徊的元素顏色的文本。

編輯時,如果您有多個單詞...您可能希望將它們分隔成每個單詞的元素。例如:

<text class="word">each</text><text class="word">word</text><text class="word">is</text><text class="word">selectable</text> 

.word:hover{ color: #FFFF00; } 

這裏的JS小提琴:http://jsfiddle.net/braTe/

+0

謝謝,但我希望通過瀏覽器的選擇功能以編程方式選擇單詞。 – VeePee 2013-03-01 21:03:51

0

看起來,如果你想使用Selection對象。在基本級別,您可以設置其錨點和焦點節點和偏移量,或者也可以創建多範圍選擇。