0

0

JavaScript与DOM组合动态创建表格实例_基础知识

php中文网

php中文网

发布时间:2016-05-16 17:45:50

|

1873人浏览过

|

来源于php中文网

原创

简介

  这篇文章简单介绍了dom 1.0一些基本而强大的方法以及如何在javascript中使用它们。你可以学到如何动态地创建、获取、控制和删除html元素。这些dom方法同样适用于xml。所有全面支持dom 1.0的浏览器都能很好地运行本篇的实例,比如ie5,firefox等。
概况 - sample1.html
  这篇文章通过实例代码介绍dom。请从尝试下面的html例子开始。它使用dom 1的方法由javascript动态创建一个html表格。它创建一个由四个包含文本内容的单元格组成的小表格。单元格的文字内容是:“单元格是第y行第x列”,表示单元格在表格中的行数和列数。

复制代码 代码如下:



实例代码 - 使用JavaScript和DOM创建HTML表格
<script> <br>function start() { <br>//获取body标签 <br>var mybody = document.getElementsByTagName("body")[0]; <br><br>// 创建一个<table>元素和一个<tbody>元素 <br>mytable = document.createElement("table"); <br>mytablebody = document.createElement("tbody"); <br><br>//创建所有的单元格 <br>for(var j = 0; j < 2; j++) { <br>// 创建一个<tr>元素 <br>mycurrent_row = document.createElement("tr"); <br>for(var i = 0; i < 2; i++) { <br>// 创建一个<td>元素 <br>mycurrent_cell = document.createElement("td"); <br>//创建一个文本节点 <br>currenttext = document.createTextNode("单元格是第"+j+"行,第"+i+"列"); <br>// 将创建的文本节点添加到<td>里 <br>mycurrent_cell.appendChild(currenttext); <br>// 将列<td>添加到行<tr> <br>mycurrent_row.appendChild(mycurrent_cell); <br>} <br>// 将行<tr>添加到<tbody> <br>mytablebody.appendChild(mycurrent_row); <br>} <br>// 将<tbody>添加到<table> <br>mytable.appendChild(mytablebody); <br>//将<table>添加到<body> <br>mybody.appendChild(mytable); <br>// 将表格mytable的border属性设置为2 <br>mytable.setAttribute("border", "2"); <br>} <br></script>






注意我们创建各元素和文字节点的顺序

1.创建元素
2.创建的子元素
3.使用一个循环来创建的子元素
4.分别使用循环为每一个创建子元素
5.为每一个创建文本节点

创建完,,,元素和文本节点,我们使用相反的顺序把它们分别添加到自己的父节点。
1.将创建的文本节点添加到里

mycurrent_cell.appendChild(currenttext);

2.将列添加到行

立即学习Java免费学习笔记(深入)”;

mycurrent_row.appendChild(mycurrent_cell);

3.将行添加到

mytablebody.appendChild(mycurrent_row);

4.将添加到

mytable.appendChild(mytablebody);

5.将添加到

mybody.appendChild(mytable);

记住这个方法。当你使用W3C DOM时会经常用到它。首先,你从上向下建立元素;然后从下向上把它们添加到父节点。
这是JavaScript代码生成的HTML:

...




单元格是第0行,第0列 单元格是第0行,第1列
单元格是第1行,第0列 单元格是第1行,第1列

...

这是代码生成的表格元素和它的子元素的DOM对象树:
sample1-tabledom.jpg
  你只需使用少量的DOM方法就可以构造这样一个表格和他的子元素。记住要时刻谨记你将创建的构造的模型树;这样会使编写代码更加简单。在图中的树里,有一个子元素。有两个子元素。的每个子元素()都有两个子元素。最后,每个有一个子元素:一个文本节点。  
基本的DOM方法 - Sample2.html
  getElementByTagName方法适用于文档和元素,所以文档根对象和所有的元素对象一样有 getElementByTagName 方法。你可以使用 element.getElementsByTagName(tagname) 来获取某个元素所有子元素的列表,使用标签名选择它们。
  element.getElementsByTagName 返回一个有特定标签名的子元素的列表。你可以通过调用一个item方法(传递一个index参数给它)来从这个子元素列表中获取一个元素。请注意列表第一个子元素的index为0。下一个主题继续前面的Table例子。下面这个实例更加简单,显示了一些基本的方法:

复制代码 代码如下:



实例代码 - 使用JavaScript和DOM创建HTML表格
<script> <br>function start() { <br>// 获取一个包含所有body元素的列表(将只有一个) <br>// 然后选择列表里的第一个元素 <br>myBody = document.getElementsByTagName("body")[0]; <br><br>// 获取body字元素中所有的p元素 <br>myBodyElements = myBody.getElementsByTagName("p"); <br><br>//获取p元素列表的第二个元素(索引从0开始) <br>myP = myBodyElements[1]; <br>} <br></script>


hi


hello





在这个例子里,我们设置myP变量为表示body里第二个p元素的DOM对象。
1.获取一个包含所有body元素的列表

myBody = document.getElementsByTagName("body")[0];

因为一个有效的html文档只有一个body元素,这个列表讲只有一项。我们通过使用 [0] 选取列表的第一个元素来得到它。
2.获取blog子元素里所有的p元素

Tanka
Tanka

具备AI长期记忆的下一代团队协作沟通工具

下载

myBodyElements = myBody.getElementsByTagName("p");

3.选取p元素列表的第二项

myP = myBodyElements[1];

sample2a2.jpg
一旦获得一个html元素的DOM对象,你就可以设置它的属性。比如,你想设置style background color属性,只需要添加:

myP.style.background = "rgb(255,0,0)";

使用document.createTextNode(”..”)创建文本节点
使用文档对象调用createTextNode方法建立你的文本节点。你只需要输入文本内容。返回值是一个表示这个文本节点的对象。

myTextNode = document.createTextNode("world");

以上代码创建一个文本数据是“word”的TEXT_NODE类型(文字块)节点,变量myTextNode指向这个节点对象。你需要设置这个文本节点为其他节点元素的字节点来插入这个文本到你的html页面里。
使用appendChild(..)插入元素
所以,通过调用myP.appendChild([node_element]),你设置这个文本节点为第二个p元素的字节点。

myP.appendChild(myTextNode);

测试这个例子,注意“hello”和“world”两个词是连在一起的:“helloworld”。所以在当你看到html页面时两个文本节点hello和world看起来好像是一个节点,而实际上在这个文档模型里有两个节点。第二个节点是一个新的TEXT_NODE类型节点,并且是第二个p标签的第二个字节点。下图在文档树里显示了刚创建的文本节点。
sample2b2.jpg

createTextNode和appendChild是在hello和world之间添加空格的一种简单的方法。需要特别注意的是appendChild方法将添加在最后一个子节点后面,就像world被添加到hello后面。所以如果你想在hello和world之间添加一个文本节点需要使用insertBefore方法而不是appendChild。

使用文档对象和createElement(..)方法创建新元素
  你可以使用createElement方法创建新的HTML元素或者其他任何你想要的其他元素。例如,如果你想为元素添加一个字节点元素,可以使用前例中的myBody添加一个新的元素节点。创建一个节点只需要调用document.createElement(”tagname”)。例如:

myNewPTAGnode = document.createElement("p");
myBody.appendChild(myNewPTAGnode);

sample2c.jpg
使用removeChild(..)方法删除节点
  每个节点都可以删除。下面这行代码删除myP(第二个元素)里包含单词world的文本节点。

myP.removeChild(myTextNode);

  最后你可以把包含单词world的文本节点myTextNode添加到新创建的元素里:

myNewPTAGnode.appendChild(myTextNode);

  修正的对象树最后像这样:
sample2d.jpg
动态创建一个表格(回到Sample1.html)
  文章的剩余部分将回到Sample1.html。下图显示了例子中创建的表格的对象树结构。
回顾HTML表格结构
sample1-tabledom.jpg
创建元素节点并把它们添加到文档树
创建sample1.html里的表格的基本步骤:

获取body对象(文档对象的第一项) 创建所有的元素 最后,按照上图的表格结构添加每一个字节点下面的源代码是sample1.html的注释

start函数的最后有一行新代码,使用另一个DOM方法setAttribute设置了表格的border属性。setAttribute方法有两个参数:属性名和属性值。你可以使用setAttribute方法设置任何元素的任何属性。

复制代码 代码如下:


实例代码 - 使用JavaScript和DOM创建HTML表格
<script> <br>function start() { <br>// 获取body <br>var mybody = document.getElementsByTagName("body")[0]; <br><br>// 创建<table>和<tbody>元素 <br>mytable = document.createElement("table"); <br>mytablebody = document.createElement("tbody"); <br><br>//创建所有的单元格 <br>for(var j = 0; j < 2; j++) { <br>// 创建一个 <tr> 元素 <br>mycurrent_row = document.createElement("tr"); <br><br>for(var i = 0; i < 2; i++) { <br>// 创建一个<td> 元素 <br>mycurrent_cell = document.createElement("td"); <br>// 创建一个文本节点 <br>currenttext = document.createTextNode("单元格是第" + j + "行,第" + i + "列"); <br>// 把创建的文本节点添加到<td>元素 <br>mycurrent_cell.appendChild(currenttext); <br>// 把<td>添加到<tr>行 <br>mycurrent_row.appendChild(mycurrent_cell); <br>} <br>// 把<tr>行添加到<tbody> <br>mytablebody.appendChild(mycurrent_row); <br>} <br><br>// 把 <tbody> 添加到 <table> <br>mytable.appendChild(mytablebody); <br>// 把 <table> 添加到 <body> <br>mybody.appendChild(mytable); <br>// 把mytable的border属性设置为2; <br>mytable.setAttribute("border","2"); <br>} <br></script>



相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.3万人学习

Django 教程
Django 教程

共28课时 | 4.4万人学习

Pandas 教程
Pandas 教程

共15课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号