<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="box">hello</div>
<p id="p">world</p>
<!-- 这是注释 -->
<script>
var box = document.getElementById('box');
console.dir(box);
// 创建一些列具有相同属性的对象,构造函数
// 获取对象没有的属性,属性的值是undefined
function Node(options) {
// 设置属性的默认值
this.className = options.className || '';
this.id = options.id || '';
// 跟节点相关的属性
// 节点的名称,如果是元素的节点的话,是标签的名称
this.nodeName = options.nodeName || '';
// 节点的类型 如果是元素节点 1 属性节点 2 文本节点 3 数值类型
this.nodeType = options.nodeType || 1;
// 记录节点的值,如果是元素节点,始终是null
this.nodeValue = options.nodeValue || null;
// 记录子节点
this.children = options.children || [];
}
// 创建html节点
var html = new Node({
nodeName: 'html'
});
// 创建head节点
var head = new Node({
nodeName: 'head'
});
// 设置html中的子节点 head
html.children.push(head);
// console.dir(html)
// body
var body = new Node({
nodeName: 'body'
})
// 设置html中的子节点 body
html.children.push(body);
// div
var div = new Node({
nodeName: 'div'
})
// p
var p = new Node({
nodeName: 'p'
})
// 设置body的子节点
body.children.push(div);
body.children.push(p);
console.dir(html);
// 在运行的时候,浏览器内部维护了一颗DOM树
// 1 深刻理解DOM
// 2 了解节点相关的属性 nodeName nodeType nodeValue
// 3 了解节点的层次结构
</script>
</body>
</html>