jQuery实现可编辑的表格


Posted in jQuery onDecember 11, 2019

前言

上一篇博客更新了在页面中如何判断用户名是否已经被输入,这篇博客介绍一下页面中的表格内容如何像Excle表格一样修改。

内容

显示效果

jQuery实现可编辑的表格

照例,先上代码

HTML代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script src="script/jquery-1.8.2.js"></script>
 <script type="text/javascript" src="script/EditTable.js"></script>
 <link href="CSS/EditTable.css" rel="stylesheet" />
</head>
<body>
 <table>
 <thead>
  <tr>
  <th colspan="2">鼠标点击表格项就可以编辑</th>
  </tr>
 </thead>
 <tbody>
  <tr>
  <th>学号</th>
  <th>姓名</th>
  </tr>
  <tr>
  <td>0000001</td>
  <td>张三</td>
  </tr>
  <tr>
  <td>0000002</td>
  <td>李四</td>
  </tr>
  <tr>
  <td>0000003</td>
  <td>王五</td>
  </tr>
  <tr>
  <td>0000004</td>
  <td>赵六</td>
  </tr>
 </tbody>
 </table>
</body>
</html>

CSS代码:

table {
 border:1px solid black;
 border-collapse:collapse;
 width:400px;
}
table td{
 border:1px solid black;
 width:50%;
}
table th{
 border:1px solid black;
 width:50%;
}
tbody th {
 background-color:#A3BAE9;
}

JavaScript代码:

//需要首先通过JavaScript来解决内容部分奇偶行的背景不同
$(function () {
 //找到表格的内容区域中所有的偶数行
 $("tbody tr:even").css("background-color", "#ECE9D8");
 //找到所有可以编辑的单元格
 var numTd = $("tbody td:even");
 //给这些单元格注册鼠标点击的事件
 numTd.click(function () {
 //找到当前鼠标点击的td,this对应的就是响应了click的那个td
 var tdObj = $(this);
 if (tdObj.children("input").length>0) {
  //当前td中有内容,不执行click操作
  return false;
 }
 var text = tdObj.html();
 tdObj.html("");
 //创建一个文本框
 //去掉文本框的边框
 //设置文本框中的文字字体大小事15px
 //是文本框的宽度和td的宽度相同
 //设置文本框的背景色
 //需要将当前td中的内容放到文本框中
 //清空td中的内容
 //文本框插入到td中去
 var inputObj = $("<input type='text'>").css("border-width", "0").css("font-size", "15px").css("background-color", tdObj.css("background-color")).width(tdObj.width()).val(tdObj.html()).val(text).appendTo(tdObj);
 //使得文本框插入之后就被选中
 inputObj.trigger("focus").trigger("select");
 inputObj.click(function () {
  return false;
 });
 //处理文本框上回车和esc按键的操作
 inputObj.keyup(function () {
  //获取当前按下键盘的键值
  var keycode = event.which;
  //处理回车的情况
  if (keycode == 13) {
  //获取到当前文本框中的内容
  var inputtext = $(this).val();
  //将td的内容修改成文本框中的内容
  tdObj.html(inputtext);
  }
  //处理esc的情况
  if (keycode == 27) {
  tdObj.html(text);
  }
 });
 });
});

这次代码稍微有点长,但是对于一目十行的大神们来说这都不算啥!

总结

HTML知识点:

  1. table中可以包含thead和tbody
  2. 表头的内容可以放到th中

CSS知识点:

  1. table{}这种写法称作标签选择器,可以对整个页面所有的table产生影响
  2. table td{}这种写法表示的是table中包含的所有td
  3. 可以通过border-collapse:collapse这种方式来使表格中的单元格的边框合并
  4. 当th上有背景色,这个th属于的tr上定义的背景色会无效
  5. css方法可以用于设定或获取节点的css属性,参数名是css的属性名

JavaScript知识点:

  1. (function())是(function())是(document).ready(function(){})的简化写法
  2. $(“tbody tr”)可以返回tbody中的所有tr节点
  3. $(“tbody tr:even”)可以返回tbody中所有索引值是偶数的tr节点
  4. jQuery的对象内容包含着选择器对应的DOM节点,以数组形式保存
  5. get方法可以获得jQuery对象中包含的某一个DOM节点
  6. function中的this代表执行这个function的对象
  7. $()方法的参数是一个DOM对象时,这个方法相当于把DOM对象转换成jQuery对象
  8. children方法可以获得某个节点的子节点,可以指定参数来限制子节点的内容
  9. 如果选择器返回的jQuery对象中包含多个DOM节点,在这个对象上注册类是click这样的时间是,所有DOM节点都会用于事件
  10. html方法可以设置或获取节点的HTML内容
  11. val方法可以获取或设置节点的value值
  12. $()方法的参数如果是一段正确的HTML文本,则可以创建一个DOM节点,并包装成jQuery对象
  13. jQuery大部分方法都会返回执行这个方法的jQuery对象,因此可以采用链式方法的写法来编写给予jQuery的代码
  14. width方法可以设置或获取某个节点的宽度
  15. appendTo方法可以将一个节点追加到另一个节点所有子节点的后面
  16. 阻止事件传递可以让当前节点的事件返回false
  17. trigger该方法可以触发某个JavaScript的事件发生
  18. jQuery中某个实践方法的参数function上可以定义一个event的参数,jQuery会屏蔽浏览器的event差异,传给我们一个可用的event对象
  19. jQuery的event对象上有一个which的属性,可以获得键盘按键的值
  20. 13表示回车键,27表示ESC键

end

谢谢您的阅读!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
jQuery使用正则验证15/18身份证的方法示例
Apr 27 jQuery
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
jQuery实现弹窗下底部页面禁止滑动效果
Dec 19 jQuery
jquery获取元素到屏幕四周可视距离的方法
Sep 05 jQuery
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
jquery实现手风琴案例
May 04 jQuery
Jquery $.map使用方法实例详解
Sep 01 jQuery
jquery简易手风琴插件的封装
Oct 13 jQuery
jQuery实现穿梭框效果
Jan 19 jQuery
jQuery实现验证用户登录
Dec 10 #jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 #jQuery
jQuery实现消息弹出框效果
Dec 10 #jQuery
jQuery实现弹出层效果
Dec 10 #jQuery
JQuery样式与属性设置方法分析
Dec 07 #jQuery
JQuery常用简单动画操作方法回顾与总结
Dec 07 #jQuery
jQuery实现全选、反选和不选功能的方法详解
Dec 04 #jQuery
You might like
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
python事件驱动event实现详解
2018/11/21 Python
Python中collections模块的基本使用教程
2018/12/07 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
python中def是做什么的
2020/06/10 Python
工商管理实习生自我鉴定范文
2013/12/18 职场文书
初婚未育证明
2014/01/15 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
小学生常见病防治方案
2014/06/06 职场文书