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 相关文章推荐
javascript创建和存储cookie示例
Jan 07 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
JS实现弹性漂浮效果的广告代码
Sep 02 Javascript
关于JavaScript数组你所不知道的3件事
Aug 24 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
Aug 29 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
Jul 10 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
微信小程序文章列表功能完整实例
Jun 03 Javascript
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
层叠菜单的动态生成
2006/10/09 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
解析php取整的几种方式
2013/06/25 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
柏林通行证:Berlin Pass
2018/04/11 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
高校辅导员推荐信范文
2013/12/25 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
运动会广播稿100字
2014/09/14 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
nginx rewrite功能使用场景分析
2022/05/30 Servers