JS给Textarea文本框添加行号的方法


Posted in Javascript onAugust 20, 2015

本文实例讲述了JS给Textarea文本框添加行号的方法。分享给大家供大家参考。具体如下:

这里使用JS实现让Textarea文本框显示行号的功能,每一行的前面都会有下数字序号,如果用来显示代码的话,可以直接找到某一行,如果不显示行号,则还要自己手功去查,想要此功能,你只需设置好TextArea ID,并加入代码中的JavaScript代码部分即可,文本框的长宽则是由CSS来控制的,你可试着修改一下,长宽的显示要与JS相匹配。

运行效果截图如下:

JS给Textarea文本框添加行号的方法

在线演示地址如下:

具体代码如下:

<html> 
<head>
<title>Js给文本框添加行号功能</title>
<style type="text/css">
 #codeTextarea{width: 500px;height: 310px;}
.textAreaWithLines{font-family: courier;border: 1px solid #ddd;}
.textAreaWithLines textarea,.textAreaWithLines div{border: 0px;line-height: 120%;font-size: 12px;}
.lineObj{color: #666;}
</style>
<script type="text/javascript">
var lineObjOffsetTop = 2;
function createTextAreaWithLines(id)
{
  var el = document.createElement('DIV');
  var ta = document.getElementById(id);
  ta.parentNode.insertBefore(el,ta);
  el.appendChild(ta);
  el.className='textAreaWithLines';
  el.style.width = (ta.offsetWidth + 30) + 'px';
  ta.style.position = 'absolute';
  ta.style.left = '30px';
  el.style.height = (ta.offsetHeight + 2) + 'px';
  el.style.overflow='hidden';
  el.style.position = 'relative';
  el.style.width = (ta.offsetWidth + 30) + 'px';
  var lineObj = document.createElement('DIV');
  lineObj.style.position = 'absolute';
  lineObj.style.top = lineObjOffsetTop + 'px';
  lineObj.style.left = '0px';
  lineObj.style.width = '27px';
  el.insertBefore(lineObj,ta);
  lineObj.style.textAlign = 'right';
  lineObj.className='lineObj';
  var string = '';
  for(var no=1;no<20;no++){
   if(string.length>0)string = string + '<br>';
   string = string + no;
  }
   ta.onkeydown = function() { positionLineObj(lineObj,ta); };
   ta.onmousedown = function() { positionLineObj(lineObj,ta); };
   ta.onscroll = function() { positionLineObj(lineObj,ta); };
   ta.onblur = function() { positionLineObj(lineObj,ta); };
   ta.onfocus = function() { positionLineObj(lineObj,ta); };
   ta.onmouseover = function() { positionLineObj(lineObj,ta); };
   lineObj.innerHTML = string;
  }
function positionLineObj(obj,ta)
{
   obj.style.top = (ta.scrollTop * -1 + lineObjOffsetTop) + 'px';  
}
</script>
</head>  
<body>
<form>
<textarea id="codeTextarea"></textarea>
</form>
<script type="text/javascript">
createTextAreaWithLines('codeTextarea');
</script>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
遍历jquery对象的代码分享
Nov 02 Javascript
不使用jquery实现js打字效果示例分享
Jan 19 Javascript
javascript实现密码强度显示
Mar 18 Javascript
javascript制作的滑动图片菜单
May 15 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
Jun 12 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
Mar 14 Javascript
jQuery+pjax简单示例汇总
Apr 21 jQuery
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
Aug 03 Javascript
解决vue项目获取dom元素宽高总是不准确问题
Jul 29 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
js实现Select列表内容自动滚动效果代码
Aug 20 #Javascript
javascript如何操作HTML下拉列表标签
Aug 20 #Javascript
七夕情人节丘比特射箭小游戏
Aug 20 #Javascript
js脚本分页代码分享(7种样式)
Aug 19 #Javascript
贴近用户体验的Jquery日期、时间选择插件
Aug 19 #Javascript
JS文字球状放大效果代码分享
Aug 19 #Javascript
IE6兼容透明背景图片及解决方案
Aug 19 #Javascript
You might like
PHP 常见郁闷问题答解
2006/11/25 PHP
PHP 高级课程笔记 面向对象
2009/06/21 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
vue webuploader 文件上传组件开发
2017/09/23 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
kafka-python批量发送数据的实例
2018/12/27 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
海飞丝广告词
2014/03/20 职场文书
二人合伙经营协议书
2014/09/13 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
英文慰问信
2015/02/14 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python