Javascript选择启动&;选择结束
我在让下面的脚本与我的文本编辑器一起工作时遇到了一些困难。我不确定是什么问题,但selectionStart和selectionEnd返回为未定义 它假设在可编辑的iframe中获得高亮显示的文本,然后替换它Javascript选择启动&;选择结束,javascript,Javascript,我在让下面的脚本与我的文本编辑器一起工作时遇到了一些困难。我不确定是什么问题,但selectionStart和selectionEnd返回为未定义 它假设在可编辑的iframe中获得高亮显示的文本,然后替换它 var textarea = document.getElementById('editor').contentWindow.document.body.innerHTML; if (document.selection) { textarea.focus(); var s
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);
}
var textarea=document.getElementById('editor').contentWindow.document.body.innerHTML;
if(文档选择)
{
textarea.focus();
var sel=document.selection.createRange();
警报(选择文本);
sel.text=''+sel.text+'';
}否则{
var len=textarea.length;
警报(len);
var start=textarea.selectionStart;
警报(启动);
var end=textarea.selectionEnd;
警报(结束);
var sel=textarea.substring(开始、结束);
警报(sel);
var替换=“”+sel+“”;
textarea=textarea.substring(0,开始)+替换+textarea.substring(结束,len);
}
未定义selectionStart
和selectionEnd
的原因是textarea
变量包含字符串,而不是对
元素的引用。您似乎意识到了这一点,因为在其他地方您正在调用字符串方法,例如substring
。需要明确的是,字符串没有selectionStart
和selectionEnd
属性;所做的对象是文本区域和文本输入。不清楚您的意图是什么。从您的其他问题和本文代码的第一行来看,您似乎正在使用基于iframe的所见即所得编辑器。textarea则有所不同:它是一个纯文本表单控件,例如用于在堆栈溢出中添加注释的控件。如果您使用的是实际的文本区域,则可以使用其selectionStart
和selectionEnd
属性(IE中除外,但这是另一回事)。如果您使用的是可编辑的iframe,则需要使用其选择对象。我明白了。。。恐怕情况就是这样。如何使用iframes选择对象?感谢您的帮助。不幸的是,IE和其他浏览器之间存在差异。我建议,如果您刚刚开始使用JavaScript,那么在这个阶段尝试编写WYSIWYG编辑器可能有点太多了:有不同的API和许多需要处理的怪癖和浏览器差异。从阅读各种API上的文档开始。MDC是一个很好的资源,MSDN有IE文档。我的答案中有一些链接:type=number
没有selectionStart
和selectionEnd
?!嗨,蒂姆,10000000谢谢你的回答。我花了半天多的时间才找到你的答案。