Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript选择启动&;选择结束_Javascript - Fatal编程技术网

Javascript选择启动&;选择结束

Javascript选择启动&;选择结束,javascript,Javascript,我在让下面的脚本与我的文本编辑器一起工作时遇到了一些困难。我不确定是什么问题,但selectionStart和selectionEnd返回为未定义 它假设在可编辑的iframe中获得高亮显示的文本,然后替换它 var textarea = document.getElementById('editor').contentWindow.document.body.innerHTML; if (document.selection) { textarea.focus(); var s

我在让下面的脚本与我的文本编辑器一起工作时遇到了一些困难。我不确定是什么问题,但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);
 }
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谢谢你的回答。我花了半天多的时间才找到你的答案。