一. 知识点回顾

  1. DOM结构

nodeName: '' 标签名
nodeType: '' 类型 1元素节点 2属性节点 3文本节点
nodeValue: '' 如果是元素节点 nodeValue的值始终是null;

  2. 节点分类

节点的分类
属性节点 元素节点 文本节点 注释节点
nodeType 为1 时 就是元素节点

  案例: 查找子节点

<script>
var box = document.getElementById("box");
console.log(box.childNodes);
for (var i = 0; i < box.childNodes.length; i++) {
var node = box.childNodes[i];
if (node.nodeType === 1) {
console.log(node);
}
}
</script>

二. 节点介绍及应用

parentNode  查找父节点 (父节点只有一个)
childNodes 查找子节点 (子节点有多个)
hasChildNodes 判断是否有子节点
children 获取所有的子元素
firstChild 获取第一个子节点
lastChild 获取最后一个子节点
firstElementChild 获取第一个子元素
lastElementChild 获取最后一个子元素 有兼容性问题
nextSibling 获取下一个兄弟节点
previousSibling 获取上一个兄弟节点
nextElementSibling 获取下一个兄弟元素
previousElementSibling 获取上一个兄弟元素

三. 动态创建元素三种方式

1. document.write() 问题 会把之前的整个页面覆盖掉, 不能在事件中使用

    <input type="button" value="按钮" id="btn">
<script>
var btn = document.getElementById('btn');
btn.onclick = function () {
document.write('Hello <p>World</p>')
} </script>

2. element.innerHTML 在这里会有效率问题 因为涉及到了重绘页面

    <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="button" value="按钮" id="btn">
<div id="box"></div>
<script>
var datas = ['西施','貂蝉','凤姐','芙蓉姐姐'];
var btn = document.getElementById('btn');
btn.onclick = function () {
var box = document.getElementById('box');
box.innerHTML = '<ul>';
for (var i = 0; i < datas.length; i++) {
var data = datas[i];
box.innerHTML += '<li>' + data + '</li>';
}
box.innerHTML += '</ul>'
}
</script>
</body>
</html>

优化1

<input type="button" value="按钮" id="btn">
<div id="box"></div>
<script>
var datas = ['西施','貂蝉','凤姐','芙蓉姐姐'];
var btn = document.getElementById('btn');
btn.onclick = function () {
var box = document.getElementById('box');
var html = '<ul>';
for (var i = 0; i < datas.length; i++) {
var data = datas[i];
html += '<li>' + data + '</li>';
}
html += '</ul>';
box.innerHTML = html;
}
</script>

优化2

<input type="button" value="按钮" id="btn">
<div id="box"></div>
<script>
var datas = ['西施','貂蝉','凤姐','芙蓉姐姐'];
var btn = document.getElementById('btn');
btn.onclick = function () {
var box = document.getElementById('box');
var array = [];
array.push('<ul>');
for (var i = 0; i < datas.length; i++) {
var data = datas[i];
array.push('<li>' + data + '</li>');
}
array.push('</ul>');
box.innerHTML = array.join('');
}
</script>

3. document.creatElement() 推荐使用

<div id="box"></div>
<script>
// 在内存中创建一个DOM对象
var p = document.createElement('p');
// 设置对象的属性
p.innerText = 'hello';
p.style.color = 'red';
// 把p元素 放到DOM树上
var box = document.getElementById('box');
box.appendChild(p);
</script>

案例 动态创建表格

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#box table {
border-collapse: collapse;
}
</style>
</head>
<body>
<div id='box'></div>
<script src="common.js"></script>
<script>
var headDatas = ['姓名','科目','成绩','操作'];
var datas = [
{name: 'zs', subject: '语文', score: 90},
{name: 'ls', subject: '数学', score: 80},
{name: 'ww', subject: '英语', score: 99},
{name: 'zl', subject: '英语', score: 100},
{name: 'xs', subject: '英语', score: 60},
{name: 'dc', subject: '英语', score: 70}
]; // 创建table元素 var table = document.createElement('table');
my$('box').appendChild(table);
table.border = '1px';
table.width = '400px'; // 创建表头
var thead = document.createElement('thead');
table.appendChild(thead);
var tr = document.createElement('tr');
thead.appendChild(tr);
tr.style.height = '40px';
tr.style.backgroundColor = 'lightgray'; for (var i = 0; i < headDatas.length; i++) {
var th = document.createElement('th');
tr.appendChild(th); setInnerText(th, headDatas[i]);
}
// 创建数据行 var tbody = document.createElement('tbody');
table.appendChild(tbody);
tbody.style.textAlign = 'center';
for (var i = 0; i < datas.length; i++) {
var data = datas[i];
var tr = document.createElement('tr');
tbody.appendChild(tr); for (var key in data) {
var td = document.createElement('td');
tr.appendChild(td);
setInnerText(td, data[key]); }
// 生成删除的对应列
var td = document.createElement('td');
tr.appendChild(td);
var link = document.createElement('a');
td.appendChild(link);
link.href = 'javascript:void(0)';
setInnerText(link, '删除') link.onclick = linkDelete; }
function linkDelete() {
var tr = this.parentNode.parentNode;
tbody.removeChild(tr);
return false;
}
</script>
</body>
</html>

四. 常用的元素操作方法

创建元素操作方法
createElement()
appendChild()
removeChild() insertBefor() 把元素插入到页面的指定位置
replaceChild() 把当前元素标签进行替换

最新文章

  1. Python--逆序打印
  2. 产生NaN
  3. SAS实验室之PROC TRANSPOSE
  4. BZOJ4152The Captain[DIjkstra]
  5. centos7.0 安装LNMP运行环境
  6. PROTEL99SE封装说明
  7. [CODEVS1697]⑨要写信
  8. poj 1236 Network of Schools(连通图入度,出度为0)
  9. javascript跨域解决方案
  10. 列式存储 V.S. 行式存储
  11. Jquery的attr属性
  12. poj 3371 Flesch Reading Ease
  13. android不自动弹出虚拟键盘
  14. REDIS学习(1)环境搭建
  15. Visual Studio&#174; 2010 Web Deployment Projects站点编译生成bin同时发表插件
  16. js实现文字横向滚动
  17. DataSet与DataReader的比较
  18. html文本encode后,js获取参数失败的bug
  19. Bootstrap 字体与图标
  20. 2017-10-5-Python

热门文章

  1. python中的修饰符@的作用
  2. ROS学习笔记(一)
  3. nginx通过robots.txt禁止所有蜘蛛访问(禁止搜索引擎收录)
  4. Qt编写气体安全管理系统22-报警联动
  5. RabbitMQ 清除全部队列及消息
  6. [ kvm ] 学习笔记 4:KVM 高级功能详解
  7. mysql.yaml
  8. 基于TreeSoft实现异构数据同步
  9. 【C/C++开发】C中调用C++函数
  10. dotnet core use RabbitMQ