使用JavaScript将行号添加到文本区域可以通过以下步骤实现:
document.getElementById()
或document.querySelector()
方法获取文本区域的引用。假设文本区域的id为textarea
,可以使用以下代码获取引用:var textarea = document.getElementById('textarea');
addEventListener()
方法添加滚动事件的监听器:textarea.addEventListener('scroll', updateLineNumbers);
document.createElement()
方法创建一个<div>
元素,并设置其样式和位置:var lineNumbers = document.createElement('div');
lineNumbers.style.position = 'absolute';
lineNumbers.style.left = '0';
lineNumbers.style.top = '0';
lineNumbers.style.width = '30px'; // 调整宽度以适应行号的长度
lineNumbers.style.height = textarea.scrollHeight + 'px'; // 设置高度与文本区域相同
function updateLineNumbers() {
var scrollTop = textarea.scrollTop;
var lineHeight = parseInt(getComputedStyle(textarea).lineHeight);
var startLine = Math.floor(scrollTop / lineHeight) + 1;
var endLine = startLine + Math.ceil(textarea.clientHeight / lineHeight);
lineNumbers.innerHTML = '';
for (var i = startLine; i <= endLine; i++) {
var line = document.createElement('div');
line.textContent = i;
lineNumbers.appendChild(line);
}
}
textarea.parentNode.insertBefore(lineNumbers, textarea);
完整的代码示例如下:
var textarea = document.getElementById('textarea');
var lineNumbers = document.createElement('div');
lineNumbers.style.position = 'absolute';
lineNumbers.style.left = '0';
lineNumbers.style.top = '0';
lineNumbers.style.width = '30px';
lineNumbers.style.height = textarea.scrollHeight + 'px';
textarea.addEventListener('scroll', updateLineNumbers);
function updateLineNumbers() {
var scrollTop = textarea.scrollTop;
var lineHeight = parseInt(getComputedStyle(textarea).lineHeight);
var startLine = Math.floor(scrollTop / lineHeight) + 1;
var endLine = startLine + Math.ceil(textarea.clientHeight / lineHeight);
lineNumbers.innerHTML = '';
for (var i = startLine; i <= endLine; i++) {
var line = document.createElement('div');
line.textContent = i;
lineNumbers.appendChild(line);
}
}
textarea.parentNode.insertBefore(lineNumbers, textarea);
这样,使用JavaScript将行号添加到文本区域的功能就实现了。你可以将以上代码嵌入到你的网页中,并根据需要进行样式和布局的调整。
领取专属 10元无门槛券
手把手带您无忧上云