2010-08-22 44 views
1

我在下面的腳本中使用我的文本編輯器時遇到了一些困難。我不知道什麼是錯,但selectionStart和selectionEnd以未定義的方式返回。Javascript selectionStart&selectionEnd

它假設在可編輯的iframe中獲得突出顯示的文本,然後將其替換。

var textarea = document.getElementById('editor').contentWindow.document.body.innerHTML; 

if (document.selection) 
{ 
    textarea.focus(); 
    var sel = document.selection.createRange(); 
    alert(sel.text); 
    sel.text = '<b>' + sel.text + '</b>'; 
} else { 
    var len = textarea.length; 
    alert(len); 
    var start = textarea.selectionStart; 
    alert(start); 
    var end = textarea.selectionEnd; 
    alert(end); 
    var sel = textarea.substring(start, end); 
    alert(sel); 
    var replaced = '<b>' + sel + '<b>'; 
    textarea = textarea.substring(0,start) + replaced + textarea.substring(end,len); 
} 

回答

9

原因selectionStartselectionEnd是不確定的是,你的textarea變量包含一個字符串,而不是一個<textarea>元素的引用。你似乎知道這一點,因爲你在別處調用字符串方法,如substring。要明確,字符串沒有selectionStartselectionEnd屬性;所做的對象是textareas和文本輸入。

+0

謝謝蒂姆。我如何修改它在沒有字符串的情況下工作? – Cory 2010-08-22 22:21:06

+2

目前還不清楚你的意圖是什麼。從這個問題的其他問題和代碼的第一行開始,似乎您正在開發基於iframe的所見即所得編輯器。 textarea有些不同:它是一個純文本的表單控件,比如Stack Overflow中用來添加註釋的東西。如果你使用的是實際的textarea,那麼你可以使用它的'selectionStart'和'selectionEnd'屬性(IE中除外,但這是另一回事)。如果您使用的是可編輯的iframe,則需要使用其Selection對象。 – 2010-08-22 22:34:49

+0

我明白了......恐怕可能是這種情況。我將如何使用iframes Selection對象?感謝你的幫助。 – Cory 2010-08-22 22:58:44

相關問題