JavaScript操作表格及CSS样式

2023-05-16

概述

在前端开发中,表格主要用于存储结构化的数据,CSS主要用于修饰DOM元素,如何通过DOM来操作表格及CSS呢?本文主要通过一些简单的小例子,简述DOM对表格和CSS的常见操作方法,仅供学习分享使用,如有不足之处,还请指正。

获取表格及数据

假如当前有一个表格,id为tb01,如下所示:


 1 <table id="tb01" width="300" border="1" cellspacing="2" cellpadding="2">
 2     <caption>人员表</caption>
 3     <thead>
 4         <tr>
 5             <td>姓名</td>
 6             <td>性别</td>
 7             <td>年龄</td>
 8         </tr>
 9     </thead>
10     <tbody>
11         <tr>
12             <td>Tom</td>
13             <td>boy</td>
14             <td>20</td>
15         </tr>
16         <tr>
17             <td>Jack</td>
18             <td>girl</td>
19             <td>19</td>
20         </tr>
21     </tbody>
22     <tfoot>
23         <tr>
24             <td colspan="3">合计:2</td>
25         </tr>
26     </tfoot>
27 </table>  
View Code

获取表格的标题[caption],表头[thead],内容[tbody],表尾[tfoot],行数[rows],某一行的列数[cells]等等,如下所示:


 1 var table=document.getElementById('tb01');
 2 alert(table.caption.innerText);//获取标题文本
 3 alert(table.tHead);//获取表头,输出[object HTMLTableSectionElement]
 4 alert(table.tBodies);//获取tbody 输出:[object HTMLCollection]
 5 alert(table.tFoot);//获取表尾,输出[object HTMLTableSectionElement]
 6 
 7 alert(table.rows.length);//得到行数 4行
 8             
 9 alert(table.tBodies[0].rows.length);//获取tbody下有多少行 ,2行
10 alert(table.tBodies[0].rows[0].cells.length);//获取对应行有几列,,3列  

获取单元格里面的内容,如下所示:


1 alert(table.tBodies[0].rows[1].cells[1].innerHTML);//获取tody下第二行第二列的内容 输出:girl  

如何删除表格中的标题[caption],表头[thead],表尾[tfoot],某行[row],某个单元格[cell],等内容,如下所示:


1 table.deleteCaption();//删除标题            
2 table.deleteTHead();//删除表头
3 table.deleteTFoot();//删除表尾
4 table.tBodies[0].deleteRow(0);//删除tbody第0行
5 table.tBodies[0].rows[0].deleteCell(1);//删除tbody第0行的第1列,右侧单元格前移  

创建表格及填充数据

从0创建一个新的表格并显示在页面上,步骤如下:

  1. 通过createElement('table')创建table元素
  2. 通过table.createCaption()创建标题
  3. 通过table.createTHead()创建表头
  4. 通过table.createTBody()窗体tbody
  5. 通过tbody.insertRow(0)插入新行,并返回行对象。
  6. 通过insertCell(0)创建单元格
  7. 通过document.body.appendChild(table);将table插入到body中

 1 var table=document.createElement('table');
 2 table.border=1;
 3 table.width=300;
 4 table.createCaption().innerHTML='人员表2';
 5 var thead = table.createTHead();
 6 var tr = thead.insertRow();
 7 tr.insertCell(0).innerHTML='Name';
 8 tr.insertCell(1).innerHTML='Sexy';
 9 tr.insertCell(2).innerHTML='Age';
10 var tbody=table.createTBody();
11 var tr0 =tbody.insertRow(0);
12 tr0.insertCell(0).innerHTML='Lily';
13 tr0.insertCell(1).innerHTML='girl';
14 tr0.insertCell(2).innerHTML='12';
15 var tr1 =tbody.insertRow(1);
16 tr1.insertCell(0).innerHTML='Lucy';
17 tr1.insertCell(1).innerHTML='girl';
18 tr1.insertCell(2).innerHTML='13';
19 var tfoot=table.createTFoot();
20 var tr3 = tfoot.insertRow();
21 var tc3= tr3.insertCell(0);
22 tc3.innerHTML='合计:2';
23 tc3.colSpan=3;
24 document.body.appendChild(table);//将table插入到body中  

CSS样式

CSS有三种:

  1. 行内样式,即设置标签的style属性
  2. 内联样式,即在<style>标签内容设置
  3. 外部样式,即通过<link href >引入

DOM操作style

有一个DIV样式如下所示:


1 <div id="A01" style="color: red;background-color: blanchedalmond;font-size: 30px;float: left;">Hello JavaScript</div>  

如何获取style设置的样式


 1 var box=document.getElementById('A01');
 2 alert(box.style);//box的行内样式对象。输出:[object MSStyleCSSProperties]
 3 alert( box.style.color);//获取设置的颜色
 4 alert(box.style.backgroundColor);//获取设置的背景颜色,如果设置属性中有-连接符,则用大写表示
 5 alert(box.style.fontSize);//获取设置的字号 30px
 6 box.style.float;//关键字,会报错
 7 alert(box.style.styleFloat);//IE11支持,获取浮动 left
 8 alert(box.style.cssFloat);//IE11支持,获取浮动 left
 9 alert(box.style.cssText);//获取style的文本内容
10 box.style.setProperty('color','yellow');//IE11支持,设置样式属性  

获取计算后的样式


1 //获取计算后的样式
2 var s = window.getComputedStyle(box,null);//IE11支持,返回[object CSSStyleDeclaration]
3 alert(s);
4 alert(s.color);//返回:rgb(255,0,0)   

获取当前样式


1 var s =box.currentStyle;//IE11支持,返回[object MSCurrentStyleProperties]
2 alert(s);
3 alert(s.color);//返回:red  

改变样式

有一个DIV元素样式如下所示:


1 <div id="box" class="one" style="color: orange;">hello js!!!</div>  

当元素的样式是通过ID来设置的,则可以通过更换ID来变更样式,但一般不建议此方式,因为id是唯一的,随意变更会引起错乱。如下所示:


1 var box=document.getElementById('box');
2 box.id='pox';//一般不建议此方式,因为id是唯一的。  

通过class添加样式

DOM通过className来获取和变更样式,如下所示:


 1 //通过class添加样式
 2 var box=document.getElementById('box');
 3 box.className='two';//会把之前的样式清除掉,再重新添加样式,这样会覆盖之前的css样式
 4 box.className='one two';//可以一次写多个样式
 5 function hasClass(element ,cname){
 6     var className=element.className;
 7     //return !!!className.match(new RegExp(cname));
 8     return  className.indexOf(cname,0)>-1;
 9 }
10 alert( hasClass(box,'one'));//返回是否包含样式
11             
12 //增加样式
13 function addClass(box,cname){
14     box.className+=' '+cname;
15 }
16             
17 //删除样式
18 function removeClass(box,cname){
19     box.className = box.className.replace(cname,' ');
20 }  

DOM操作外部样式

获取link


 1 //获取link
 2 var link=document.getElementsByTagName('link')[0];//获取第一个link连接的外部css文件对象
 3 var sheet=link.sheet || link.stylesheet;//为了防止浏览器不兼容
 4 alert(sheet);//输出:[object CSSStyleSheet]
 5         
 6 //如果既有link又有style获取会比较麻烦
 7 var sheets = document.styleSheets;
 8 alert(sheets);//获取的是styleSheets列表 输出[object StyleSheetList]
 9 var sheet=sheets[0];
10 alert( sheet.disabled);//是否被禁用
11 alert(sheet.href);//css样式的路径
12 alert(sheet.title);//获取或设置link的title
13 alert(sheet.media[0]);//IE11,是undefined  

CSS样式规则集合


1 alert(sheet.cssRules);//CSS样式规则集合,输出 [object CSSRuleList]
2 alert(sheet.cssRules.length);//规则的长度
3 alert(sheet.cssRules[0].cssText);//第一个规则的css文本 .one{font-size:20px;}
4 alert(sheet.cssRules[0].selectorText);//第一个规则的选择符 输出.one
5 sheet.deleteRule(0);//删除第一条规则
6 sheet.insertRule('body{background-color:orange;}',0);//插入一条规则,第一个参数:规则内容,第二参数:插入位置  

以下方法和上述一致,可以兼容两种,来兼容不同的浏览器,如下所示:


1 alert( sheet.rules);//输出[object MSCSSRuleList]
2 alert(sheet.rules[0].selectorText);////第一个规则的选择符 输出.one
3 alert(sheet.rules[0].cssText);//第一个规则的css文本 .one{font-size:20px;}
4 sheet.addRule('body','background-color:orange;',0);//添加规则
5 sheet.removeRule(0);//删除规则
6 alert( sheet.rules[0].style.color);//行内,内联,样式都可以获取到
7 alert(sheet.cssRules[0].style.color);  

备注

次北固山下
[ 唐 ] 王湾

客路青山外,行舟绿水前。潮平两岸阔,风正一帆悬。

海日生残夜,江春入旧年。乡书何处达?归雁洛阳边。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript操作表格及CSS样式 的相关文章

  • jQuery 输入焦点不起作用

    我正在尝试在表中创建数据的内联编辑 为此 我将单元格中的文本更改为输入 document ready function td edit on click function this html
  • 从提交的表单中获取值

    我有一个非常简单的表格
  • LitElement 不更新列表中的复选框

    我有一个简单的清单 每个项目都有一个删除按钮 当我选中第一个项目然后删除它时 列表会更新 删除该项目 但会选中下一个项目的复选框 下一项的属性是正确的 这是我的代码 import LitElement html from lit eleme
  • 如何使用 JavaScript 访问 runat="server" ASP 元素?

    似乎每个人都在这样做 在代码帖子等中 但我不知道如何 每当我尝试使用 JavaScript 操作 asp 元素时 我都会得到一个 element is null or document is undefined 等等错误 JavaScrip
  • Jquery onclick 更改图像 - 3 个产品支架

    EDIT 我想添加另一个按钮 因此总共有 3 个按钮 而不是 2 个 我怎样才能做到这一点 我尝试添加产品支架 3 但如果我先单击按钮 1 然后单击按钮 3 则两个按钮都具有相同的背景图像 预览 http gyazo com 6698586
  • 使文本在 div 内可滚动

    我希望将一些冗长的文本包含到div可以通过向上或向下滚动来查看文本 现在 描述 文本呈现如下并且位于一个 div class div
  • 如何限制注册用户尝试投票两次[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 php 编码和网站设计非常陌生 我正在尝试开发一个在线投票系统 只允许注册用户投票 已完成所有操作并且工作正常 但我需要的帮助是
  • React 和 ES6 继承

    Note 这篇文章是在 React 不支持 ES6 v12 时发布的 我有一个 ES6 课程 class BaseClass getInitialState return message Hello render return div di
  • 避免 IE 中因背景图像而出现“混合内容”警告的具体规则是什么?

    这与SSL 和 CSS 背景图像导致的混合内容 https stackoverflow com questions 1548551 ssl and mixed content due to css background images但这个问
  • 删除添加空值的Javascript对象项[重复]

    这个问题在这里已经有答案了 我有一个 JavaScript 对象 finalTitleList Title ffd Iscompleted Id 0 Title fdfmdbk Iscompleted Id 1 Title fdf d Is
  • 是否可以使用 JavaScript 导入 HTML?

    我有一些具有相同页脚的 html 页面 使用 JavaScript 并且仅使用 JavaScript 我可以在其中导入另一个 html 页面吗 下面介绍了如何仅使用 JavaScript 向页面添加页脚 2022 代码 使用fetch ht
  • 更改滚动条样式

    我们可以更改滚动条样式吗 我想在其上放置图像 而不是默认滚动条 No IE 允许更改某些滚动条元素的颜色 但其他浏览器 不 唯一的解决方案是使用自定义 JS 来实现这一点 但这总是比本机控件更丑陋和无用 看一眼 http www kelvi
  • 你可以推荐什么 JavaScript 缓存 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个好的javascript内存缓存库来缓存客户端计算结果 我的要求 适用于 Internet Explorer FireFox
  • 利用源映射的堆栈跟踪

    概述 浏览器控制台中的堆栈跟踪输出与调用 Error stack 时返回的跟踪不同 控制台堆栈跟踪似乎考虑了源映射 而 Error stack 堆栈跟踪则没有 控制台输出这是输出到控制台的默认堆栈跟踪 Uncaught TypeError
  • 内联块元素和块元素之间的空间

    这两个 div 之间的空间是多少 我什至删除了 html 中的空白 div div div div http jsfiddle net 9thpuvwa http jsfiddle net 9thpuvwa 现在 如果第一个 div asd
  • Angular 4 - “等待操作”的正确方法是什么?

    我遇到了一个简单的问题 有一个很奇怪的解决方案setTimeout 0 看看这个简单的代码 Component selector my app template div div
  • 检查用户是否登录 Facebook

    我正在尝试使用 javascript 检查用户是否登录 Facebook 刚刚登录或未登录 与我的应用程序无关 我尝试在 FB init 之后使用以下代码 FB getLoginStatus function response alert
  • 如何使用 JavaScript 大致计算网站的连接速度?

    如何使用 JavaScript 大致计算网站的连接速度 我想创建一个像这样的javascript小部件 它将计算打开当前打开页面的速度 我想问是否可以仅使用 javascript 来完成此操作以及想法是什么 Update 请注意 页面大小始
  • 按 Chartjs 条形图的键对对象进行分组

    我正在尝试使用 Chart js 创建条形图 我在尝试根据每个用户的状态创建分组条形图时陷入困境 这是数据 statusId 0 firstName Joe status appealed count 1 statusId 0 firstN
  • 如何将react-native与php一起使用并获取返回数据始终为空

    我的回报始终为空 我似乎无法让它发挥作用 我如何将react native与php一起使用并获取json 任何人都可以帮忙吗 PHP myArray array myArray lat POST lat myArray lng POST l

随机推荐

  • 【Java】说说Java的线程池

    说说Java的线程池 文章目录 说说Java的线程池为什么要使用线程池ThreadPoolExecutor提供的构造方法解析 线程池处理流程 为什么要使用线程池 创建 销毁线程需要消耗系统资源 xff0c 线程池可以复用已创建的线程控制并发
  • 【Java】Java的类加载器和双亲委派模型

    文章目录 类加载器双亲委派模型 类加载器 对于任意一个类 xff0c 都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性 xff0c 每一个类加载器 xff0c 都有一个独立的类名称空间 比较两个类是否 34 相等
  • 【git】说说git的基础命令

    git的基础命令 命令名称作用git config global user name 用户名设置用户签名git config global user email 邮箱设置用户签名git init初始化本地库git status查看本地库状态
  • 【maven】maven基础知识入门

    maven 文章目录 maven什么是maven为什么使用maven项目构建过程的几个主要环节maven核心概念如何通过坐标到仓库中查找jar包 什么是maven Maven 是 Apache 软件基金会组织维护的一款自动化构建工具 xff
  • 【spring】说说spring的IOC与DI

    说说spring的IOC与DI 文章目录 说说spring的IOC与DIid属性和name属性标签scope Bean的作用范围Spring xff0c 配置生成Bean的三种方式Sping 的 Bean属性注入Sping的Bean属性通过
  • ffmpeg时间戳相关函数

    1 概述 ffmpeg中与时间戳相关的函数主要有 xff1a av rescale q xff0c av rescale q rnd xff0c av compare ts av rescale q span class token cla
  • 【计算机网络】网线规格的鉴别与接线方法

    网线规格的鉴别与接线发送 文章目录 网线规格的鉴别与接线发送一 怎么判断网线类型 xff1f 二 制作网线标准三 屏蔽类型四 使用场景五 米数标记接线方法 一 怎么判断网线类型 xff1f 可以根据网线外皮的标识来判断 xff0c 正规厂商
  • 【Java】说说spring-jdbc和spring事务管理

    文章目录 说说spring jdbc和spring事务管理spring jdbc1 配置数据源2 使用jdbcTemplete3 在dao层使用jdbcTemplete 外部配置方式新建配置文件jdbc properties修改数据源配置部
  • 【微服务】springcloud-dubbo,springCloudAlibaba服务调用使用dubbo

    springcloud dubbo xff0c springCloudAlibaba服务调用使用dubbo 文章目录 springcloud dubbo xff0c springCloudAlibaba服务调用使用dubbo添加依赖配置具体
  • 【项目实战】spring boot中使用webSocket

    spring boot中使用webSocket 文章目录 spring boot中使用webSocket引入依赖支持配置类接口类前端连接方式前端信息发送方式 引入依赖 需要在基础的spring boot web项目项目中添加下面一个依赖 x
  • 【项目复盘】springboot项目中使用mybatis-plus进行分页

    springboot项目中使用mybatis plus进行分页 文章目录 springboot项目中使用mybatis plus进行分页引入依赖配置类实体类持久层业务层 引入依赖 span class token generics span
  • 【项目复盘】javax.validation的简单使用

    javax validation的简单使用 javax validation需要与hibernate validator配合使用 validation bean 是基于JSR 303标准开发出来的 xff0c 使用注解方式实现 xff0c
  • 【项目复盘】springboot中使用swagger生成接口文档并配置bootstrap主题

    springboot中使用swagger生成接口文档并配置bootstrap主题 引入依赖 span class token generics span class token punctuation lt span dependency
  • 【项目复盘】微服务网关GateWay过滤

    微服务网管过滤 新建一个过滤类 span class token annotation punctuation 64 Component span span class token comment 过滤器的执行优先级 返回值越小 执行优先级
  • 【项目实战】Winodws下使用ELK搭建日志分析框架

    项目实战 Winodws下使用ELK搭建日志分析框架 ELK是什么 xff1a 引用官网的一句话 xff1a 核心产品包括 Elasticsearch Kibana Beats 和 Logstash xff08 也称为 ELK Stack
  • java_网络编程知识

    day11 网络编程 主要内容 软件架构CS xff0f BS网络通信三要素TCP通信Socket套接字ServerSocket 学习目标 能够辨别UDP和TCP协议特点 能够说出TCP协议下两个常用类名称 能够编写TCP协议下字符串数据传
  • AvFrame和AvPacket

    在FFmpeg中 未压缩的图像和压缩的视频码流分别使用AVFrame结构和AVPacket结构保存 针对视频编码器 其流程为从数据源获取图像格式的输入数据 保存为AVFrame对象并传入编码器 从编码器输出AVPacket结构 1 AVFr
  • 基于FreeRTOS的stm32程序初始化底层搭建(hal库)

    采用嵌入式实时操作系统 RTOS 可以更合理 更有效地利用CPU的资源 xff0c 简化应用软件的设计 xff0c 缩短系统开发时间 xff0c 更好地保证系统的实时性和可靠性 FreeRTOS是一个迷你的实时操作系统内核 作为一个轻量级的
  • ceres小结 -- vins为例

    从 typora 复制的 排版有问题 见谅 在estimator cpp文件里 这个函数 void Estimator optimization 1 声明problem ceres Problem problem 2 引入核函数loss f
  • JavaScript操作表格及CSS样式

    概述 在前端开发中 xff0c 表格主要用于存储结构化的数据 xff0c CSS主要用于修饰DOM元素 xff0c 如何通过DOM来操作表格及CSS呢 xff1f 本文主要通过一些简单的小例子 xff0c 简述DOM对表格和CSS的常见操作