我在使用下面的脚本处理文本编辑器时遇到了一些困难。我不确定是什么问题,但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);
}
答案 0 :(得分:11)
selectionStart
和selectionEnd
未定义的原因是您的textarea
变量包含字符串,而不是对<textarea>
元素的引用。您似乎已经意识到这一点,因为在其他地方您正在调用substring
之类的字符串方法。需要明确的是,字符串没有selectionStart
和selectionEnd
属性;做的对象是textareas和文本输入。