【发布时间】:2012-12-02 14:04:24
【问题描述】:
我有一个你自己的文本编辑器,可以让你更改textarea 元素的一部分。我想调整它以使用跨度元素。我对跨度没有特别的依恋。目标只是让某人编辑 html 而不是 textarea。我在 IE 中运行良好,但在 Mozilla 中遇到了一些问题。
由于我使用的是跨度而不是表单输入,因此我使用的是innerHTML 而不是值。但是,我似乎无法让 selectionStart 和 selectionEnd 函数在 innerHTML 上工作,而不是在 value 上工作。
这是运行良好的textarea 代码....
html
<textarea id="textarea>Some text goes here</textarea><a href="javascript:void() onclick="editText">edit</a>
JS
function editText() {
var len = displaytext.value.length;
var start = displaytext.selectionStart;
var end = displaytext.selectionEnd;
var sel = displaytext.value.substring(start, end); returns selection ok
alert(sel);
}
但是,下面的改编并不限制选择开始和结束。
html
<span id="textarea>Some text goes here</span><a href="javascript:void() onclick="editText">edit</a>
JS
function editText() {
var len = displaytext.innerHTML.length; //works ok
var start = displaytext.selectionStart; //does not seem to work
var end = displaytext.selectionEnd; //does not seem to work
var sel = displaytext.innerHTML.substring(start, end); //returns whole innerHTML not selection
alert(sel);
}
innerHTML 上的selecionStart 有问题吗?解决方法?语法错误?感谢您的任何建议。
【问题讨论】:
-
innerHTML和value会导致什么结果?您可以在警报中获取这些结果并将结果粘贴到此处吗? (或链接) -
它返回未定义。认为我发现 selectionStart 仅适用于 textarea 和 text 元素。看起来我需要替代适用于跨度的 selectionStart 和 selectionEnd ...
-
how to get span selected portion using Javascript 的可能副本看这里(第一个答案解释了它)
标签: javascript innerhtml