写一个html 实现选中textarea框内容中的一个词 悬浮显示这个词在第几行吗
时间: 2024-03-13 19:46:29 浏览: 113
可以通过以下步骤实现选中文本后悬浮显示该文本所在行数:
1. 创建一个用于显示行数的元素,例如一个 `div` 元素。
2. 通过 CSS 设置该元素的样式,例如设置 `position: absolute` 和 `display: none`,使其在文本框中悬浮显示。
3. 给文本框绑定 `mouseup` 事件,当用户选中文本后,获取该文本所在的行数,并将行数显示在悬浮元素中。
下面是一个示例代码:
```html
<textarea id="myTextarea">这是第1行
这是第2行
这是第3行</textarea>
<div id="tooltip"></div>
<script>
var textarea = document.getElementById("myTextarea");
var tooltip = document.getElementById("tooltip");
tooltip.style.position = "absolute";
tooltip.style.display = "none";
tooltip.style.backgroundColor = "#fff";
tooltip.style.border = "1px solid #ccc";
tooltip.style.padding = "5px";
textarea.addEventListener("mouseup", function() {
var selectionStart = textarea.selectionStart;
var selectionEnd = textarea.selectionEnd;
var text = textarea.value;
var selectedText = text.substring(selectionStart, selectionEnd);
var lineNumber = text.substr(0, selectionStart).split("\n").length;
tooltip.innerHTML = "第" + lineNumber + "行";
tooltip.style.display = "block";
tooltip.style.left = event.pageX + "px";
tooltip.style.top = event.pageY + "px";
});
textarea.addEventListener("mousedown", function() {
tooltip.style.display = "none";
});
</script>
```
当用户在文本框中选中一段文本时,会触发 `mouseup` 事件,该事件会执行上述代码。代码中,首先获取选中文本的起始位置和结束位置,然后获取选中文本所在的行数,并将行数显示在悬浮元素中。最后设置悬浮元素的位置和显示方式。当用户在文本框中点击时,会触发 `mousedown` 事件,该事件会隐藏悬浮元素。
阅读全文