~~~
<div class="box" id="box">
<!-- 我就是一个注释 -->
<h2 class="title">课程大纲</h2>
<ul>
<li>正式课前五周:JS(包含ES6~ES9)中的核心知识、底层原理、实战案例</li>
<li id="li2">正式课六七周:AJAX、HTTP、NODE、WEBPACK、GIT、前后端交互、跨域...</li>
<!-- 上述都是JS最底层的核心知识,必须掌握扎实 -->
<li>正式课第八~十周:VUE全家桶(VUE核心源码、VUEX、VUE-ROUTER源码解读)实战应用</li>
<li id="li4">正式课第十一/十二周:REACT全家桶(所有的核心源码解读)实战应用</li>
上面这些东西学会了,找工作已经没问题了
<li>正式课第十三~十四周:小程序开发、TypeScript、企业讲师实战分享、毕设答辩、简历、就业指导以及一些最新的内容扩展</li>
<!-- 上述东西是现在市面上要求的能力,这些能力需要牢牢掌握,有独立全栈实战开发能力,毕设项目做不出来,不允许毕业 -->
<li>长期的,不定时的内部分享课:前端需要的,在我们课程中基本都有,而且基础+实战+源码全方面都包含了</li>
</ul>
</div>
~~~
~~~
<script>
/*
* 节点NODE:所有页面中包含的东西,都被称为节点
* document文档节点
* nodeType:9
* nodeName:"#document"
* nodeValue:null
* 元素节点:元素标签
* nodeType:1
* nodeName:"大写标签名"
* nodeValue:null
* 文本节点:文字或者标签之间的空格和换行也被当做文本节点
* nodeType:3
* nodeName:"#text"
* nodeValue:文本内容
* 注释节点:注释内容
* nodeType:8
* nodeName:"#comment"
* nodeValue:注释内容
* ......
*/
//=====描述节点和节点之间的关系属性,基于这些属性可以获取到指定的节点
// [CONTAINER].childNodes:获取当前容器中所有的子节点(包含各种类型的节点)
// [CONTAINER].children:获取当前容器中所有的元素子节点(只有元素标签的,在IE低版本浏览器中,也会把注释当做元素节点)
// [NODE].parentNode:获取某一个节点的父节点
// [NODE].previousSibling:获取某一个节点的上一个哥哥节点
// [NODE].previousElementSibling:获取某一个节点的上一个哥哥元素节点(不兼容IE低版本)
// [NODE].nextSibling:获取某一个节点的下一个弟弟节点
// [NODE].nextElementSibling:获取某一个节点的下一个弟弟元素节点(不兼容IE低版本)
// [CONTAINER].firstChild:获取容器中第一个子节点
// [CONTAINER].firstElementChild:获取容器中第一个元素子节点(不兼容IE低版本)
// [CONTAINER].lastChild:获取容器中最后一个子节点
// [CONTAINER].lastElementChild:获取容器中最后一个元素子节点(不兼容IE低版本)
// var box = document.getElementById('box');
// console.log(box.childNodes); //=>获取的是一个节点集合,包含容器中的所有类型节点(空格换行是文本节点) =>7个
// console.log(box.children); //=>获取的是一个元素集合,只有元素节点 =>2个
// 兼容问题:在IE6~8中
// 1. children获取的是3个,因为它把注释也当做元素节点处理的
// 2. childNodes获取的也是3个,因为在这些浏览器中,不会把空格和换行当做文本节点(不认为这是节点)
/* 获取指定容器CONTAINER中的所有元素子节点,需要兼容所有的浏览器 */
/* function children(container) {
// 获取所有的子节点,遍历这些节点,所有NODETYPE===1的就是我们想要的元素子节点
var nodeList = container.childNodes,
result = [];
for (var i = 0; i < nodeList.length; i++) {
var itemNode = nodeList[i];
if (itemNode.nodeType === 1) {
// 元素节点
result.push(itemNode);
}
}
return result;
}
var arr = children(box);
console.log(arr); */
</script>
~~~
- 0001.开课说明
- 0002.ECMAScript的发展历程
- 0003.WEB2.0时代-服务器端渲染,前后端不分离
- 0004.WEB2.0时代-前后端分离模式
- 0005.大前端时代概述
- 0006.前端需要的技术栈和学习技巧
- 0007.浏览器
- 0008.JS的三部分组成
- 0009.JS中创建变量的6种形式
- 0010.JS中变量的命名规范
- 0011.JS中的数据类型分类
- 0012.JS中常用的几种输出方式
- 0013.number属性类型详细解读1
- 0014.number数据类型详细解读2
- 0015.string数据类型详细解读1
- 0016.string数据类型详细解读2
- 0017.boolean数据类型详细解读
- 0018.object数据类型详细解读1
- 0019.object数据类型详细解读2
- 0020.谈谈学习
- 0021.数据类型检测
- 0022.浏览器底层渲染机制(堆栈内存和数据类型区别)
- 0023.关于数据类型区别的面试题
- 0024.课后作业讲解:数据类型转换
- 0025.课后作业讲解:堆栈内存处理
- 0026.课后作业讲解:阿里的一道经典面试题
- 0027.JS中三种常用的判断语句
- 0028.小实战:开关灯特效
- 0029.FOR循环和FOR IN循环
- 0030.课后作业讲解:关于循环判断和数据转化
- 0031.课后作业讲解:关于DOM对象的深入理解
- 0032.关于元素集合的相关操作(奇偶行变色)
- 0033.课后作业讲解:逻辑思维判断题
- reset.min.css
- 0034.(复习)前四天内容的综合复习梳理
- 0035.初窥函数:函数的作用、语法、形参
- 0036-0038.选项卡案例
- 0039.隔行变色案例:进一步强化自定义属性编程思想
- 0040.其它作业题的讲解(自定义属性强化)
- 0041.函数创建和执行的堆栈运行机制
- 0042.函数中的形参和实参
- 0043.函数中的实参集合ARGUMENTS
- 0044.函数中的返回值RETURN
- 0045.箭头函数和匿名函数
- 0046.两个等于比较时候的数据类型转换规则
- 0047.数组的基础结构和常规操作
- 0048.数组常用方法:增删改的五个方法
- 0049.数组常用方法:查询、拼接、转换为字符串
- 0050.数组常用方法:检测是否包含、排序和迭代
- 0051.数组去重:双FOR循环(数组塌陷和SPLICE删除优化)
- 0052.数组去重:对象键值对方式(ES6中SET)
- 0053.Math数学函数对象中常用的方法
- 0054.String字符串中常用的方法
- 0055.实战案例:时间字符串格式化
- 0056.实战案例:queryURLParams1
- 0057.实战案例:queryURLParams2
- 0058.实战案例:获取四位不重复的验证码
- 0059.阶段作业题讲解1(基础知识)
- 0060.阶段作业题讲解2(实战案例)
- 0061-0062.DOM操作中相关知识的复习
- 0063.DOM中的节点操作1
- 0064.DOM中的节点操作2
- utils
- 65.关于DOM的增删改