Javascript选择开始和选择结束

Cor*_*ory 3 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);
 }
Run Code Online (Sandbox Code Playgroud)

Tim*_*own 12

原因selectionStartselectionEnd未定义的是您的textarea变量包含字符串,而不是对<textarea>元素的引用.你似乎意识到这一点,因为你在其他地方调用字符串方法,如substring.为了清楚起见,字符串没有selectionStartselectionEnd属性; 做的对象是textareas和文本输入.

  • 目前还不清楚你的意图是什么.从您的其他问题以及此代码中的第一行代码开始,您似乎正在使用基于iframe的WYSIWYG编辑器.textarea是不同的东西:它是一个纯文本的表单控件,比如用于在Stack Overflow中添加注释的内容.如果您正在使用实际的textarea,那么您可以使用它的`selectionStart`和`selectionEnd`属性(IE中除外,但这是另一个故事).如果您正在使用可编辑的iframe,则需要使用其Selection对象. (2认同)
  • `type=number` 没有 `selectionStart` 和 `selectionEnd` ?! (2认同)