JavaScript操作表格及CSS样式

简介: JavaScript操作表格及CSS样式

概述

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

获取表格及数据

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

<table id="tb01" width="300" border="1" cellspacing="2" cellpadding="2">
    <caption>人员表</caption>
    <thead>
        <tr>
            <td>姓名</td>
            <td>性别</td>
            <td>年龄</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Tom</td>
            <td>boy</td>
            <td>20</td>
        </tr>
        <tr>
            <td>Jack</td>
            <td>girl</td>
            <td>19</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td colspan="3">合计:2</td>
        </tr>
    </tfoot>
</table>

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

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

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

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

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

table.deleteCaption();//删除标题            
table.deleteTHead();//删除表头
table.deleteTFoot();//删除表尾
table.tBodies[0].deleteRow(0);//删除tbody第0行
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中
var table=document.createElement('table');
table.border=1;
table.width=300;
table.createCaption().innerHTML='人员表2';
var thead = table.createTHead();
var tr = thead.insertRow();
tr.insertCell(0).innerHTML='Name';
tr.insertCell(1).innerHTML='Sexy';
tr.insertCell(2).innerHTML='Age';
var tbody=table.createTBody();
var tr0 =tbody.insertRow(0);
tr0.insertCell(0).innerHTML='Lily';
tr0.insertCell(1).innerHTML='girl';
tr0.insertCell(2).innerHTML='12';
var tr1 =tbody.insertRow(1);
tr1.insertCell(0).innerHTML='Lucy';
tr1.insertCell(1).innerHTML='girl';
tr1.insertCell(2).innerHTML='13';
var tfoot=table.createTFoot();
var tr3 = tfoot.insertRow();
var tc3= tr3.insertCell(0);
tc3.innerHTML='合计:2';
tc3.colSpan=3;
document.body.appendChild(table);//将table插入到body中

CSS样式

CSS有三种:

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

DOM操作style

有一个DIV样式如下所示:

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

如何获取style设置的样式

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

获取计算后的样式

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

获取当前样式

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

改变样式

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

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

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

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

通过class添加样式

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

//通过class添加样式
var box=document.getElementById('box');
box.className='two';//会把之前的样式清除掉,再重新添加样式,这样会覆盖之前的css样式
box.className='one two';//可以一次写多个样式
function hasClass(element ,cname){
    var className=element.className;
    //return !!!className.match(new RegExp(cname));
    return  className.indexOf(cname,0)>-1;
}
alert( hasClass(box,'one'));//返回是否包含样式
//增加样式
function addClass(box,cname){
    box.className+=' '+cname;
}
//删除样式
function removeClass(box,cname){
    box.className = box.className.replace(cname,' ');
}

DOM操作外部样式

获取link

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

CSS样式规则集合

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

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

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

备注

次北固山下

[ 唐 ] 王湾

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

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

相关文章
|
27天前
|
前端开发
如何设置 CSS 盒子模型的边框样式?
CSS盒子模型的边框样式可以通过`border`属性设置,包括边框宽度、样式和颜色。例如:`border: 2px solid red;` 设置了2像素宽的红色实线边框。也可分别设置四边,如`border-top`、`border-right`等。
|
10天前
|
移动开发 JavaScript 前端开发
html table+css实现可编辑表格的示例代码
html table+css实现可编辑表格的示例代码
|
16天前
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
|
16天前
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
|
7天前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
7天前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
37 1
|
12天前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
24 3
|
16天前
|
前端开发 JavaScript UED
|
16天前
|
前端开发 JavaScript UED
如何使用 JavaScript 动态修改 CSS 变量的值?
【10月更文挑战第28天】使用JavaScript动态修改CSS变量的值可以为页面带来更丰富的交互效果和动态样式变化,根据不同的应用场景和需求,可以选择合适的方法来实现CSS变量的动态修改,从而提高页面的灵活性和用户体验。
|
22天前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
74 6