Blogger Information
Blog 18
fans 1
comment 1
visits 11232
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
js 流程控制 和 DOM操作
至诚网络的博客
Original
546 people have browsed it

解构赋值

  1. <script>
  2. // 将用户名,邮箱,保存到独立 变量中
  3. const user = ["小明", "xm@qq.com"];
  4. let userName = user[0];
  5. let userEmail = user[1];
  6. // es6, 用解构完成以上功能 将多值/引用,解析到单值变量中
  7. // 主要针对 数组, 对象
  8. // 1. 数组解构
  9. // 左边模板 = 右边具体的值
  10. let [name, email] = ["小明", "xm@qq.com"];
  11. //更新
  12. [name, email] = ["灭绝", "mj@qq.com"];
  13. // 参数不足: 可以添加默认参数
  14. [name, email, age = 18] = ["灭绝", "mj@qq.com"];
  15. // 参数过多: 归并参数
  16. let [a, b, c, d, ...e] = [1, 2, 3, 4, 5, 6, 7];
  17. console.log(a, b, c, d, e);
  18. // 交换二个数 用传统思维
  19. let x = 10,
  20. y = 20;
  21. console.log("x = %d, y = %d", x, y);
  22. // let t = 0;
  23. // t = x;
  24. // x = y;
  25. // y = t;
  26. // 使用解构一行搞定
  27. [y, x] = [x, y];
  28. console.log("x = %d, y = %d", x, y);
  29. // 2. 对象解构
  30. let { id, course, score } = { id: 1, course: "JS", score: 88 };
  31. // 属性与变量同名
  32. console.log(id, course, score);
  33. // 无声明赋值
  34. // 等号左边的数据,左值,禁止出现大括号 , 使用括号包住将它转为表达式进行求值
  35. ({ id, course, score } = { id: 2, course: "PHP", score: 99 });
  36. console.log(id, course, score);
  37. // 使用别名,防止命名冲突
  38. let { name: myName, email: myEmail } = {name: "灭绝",email: "mj@qq.com",};
  39. console.log(myName, myEmail);
  40. // 对象的复制
  41. let { ...r } = { a: 1, b: 2, c: 3 };
  42. console.log(r);
  43. // 3. 解构用在函数参数
  44. // function getUser(user) {
  45. // console.log(user.id, user.name, user.email);
  46. // }
  47. // 作用解构来简化传参与使用
  48. function getUser({ id, name, email }) {
  49. console.log(id, name, email);
  50. }
  51. getUser({ id: 156, name: "李四", email: "ls@a.com" });
  52. </script>

流程控制

分支 ( if 与 switch )

  1. <script>
  2. // 代码块, 无条件执行
  3. {
  4. // var , let 区别在于是否支持块级的作用域
  5. // var a = 123; // 外面可以访问 这叫变量泄露
  6. // let a = 123; // 外面不能访问到
  7. console.log("Hi, 晚上好");
  8. }
  9. // console.log(a);
  10. // 代码块: 有条件
  11. let status = false;
  12. // 单分支
  13. if (status) {
  14. console.log("Hi, 晚上好");
  15. }
  16. // 双分支
  17. if (status) {
  18. console.log("Hi, 晚上好");
  19. } else {
  20. console.log("Hi , 上午好");
  21. }
  22. // 多分支
  23. status = 88;
  24. // === 恒等,二个数据不仅值要相等, 而且类型也要相等,不会触发类型的自动转换
  25. if (status === 1) {
  26. console.log("Hi, 晚上好");
  27. } else if (status === 2) {
  28. console.log("Hi , 中午好");
  29. } else if (status === 3) {
  30. console.log("Hi , 下午好");
  31. } else {
  32. // 当所有条件都不满足,就走到这: 默认分支
  33. console.log("参数错误");
  34. }
  35. // switch来简化多分支
  36. status = 1;
  37. switch (status) {
  38. case 1:
  39. console.log("Hi, 晚上好");
  40. break;
  41. case 2:
  42. console.log("Hi , 中午好");
  43. break;
  44. case 3:
  45. console.log("Hi , 下午好");
  46. break;
  47. default:
  48. // 当所有条件都不满足,就走到这: 默认分支
  49. console.log("参数错误");
  50. }
  51. // 简化方案
  52. // 1. 如果只有一条语句,可以不写大括号
  53. if (true) console.log("Hello world");
  54. // 2. 双分支可以用"三元运算符"进行简化
  55. // 条件 ? 为true 时 : 为false时
  56. 10 < 5 ? console.log(true) : console.log(false);
  57. // 多条语句也可以用三元来简化,但是要与IIFE(立即执行函数配合)
  58. 10 > 5
  59. ? (function () {
  60. console.log("true时结果:");
  61. console.log(true);
  62. })()
  63. : (function () {
  64. console.log("false时结果:");
  65. console.log(false);
  66. })();
  67. </script>

循环 ( while 与 for )

  1. <script>
  2. // 循环有三个要素: 1. 循环变量 2. 循环条件 3. 更新循环条件
  3. const lang = ["html", "css", "js"];
  4. // 1. while():入口循环, 进入循环前必须判断一次循环条件
  5. let i = 0;
  6. while (i < lang.length) {
  7. console.log(lang[i]);
  8. i = i + 1;
  9. }
  10. // do-while(): 出口判断型, 所以条件不论是否满足, 都会执行一次循环体
  11. i = 0;
  12. do {
  13. console.log(lang[i]);
  14. i = i + 1;
  15. } while (i > lang.length);
  16. console.log("----------");
  17. // 2. for
  18. // for ( 循环变量初始化; 循环条件; 更新循环条件)
  19. for (let i = 0; i < lang.length; i++) {
  20. console.log(lang[i]);
  21. }
  22. // 简写 只有一条语句,可以不写大括号
  23. for (let i = 0; i < lang.length; i++) console.log(lang[i]);
  24. console.log("========");
  25. </script>

遍历

  1. <script>
  2. // for - of 遍历数组
  3. const lang = ["html", "css", "js"];
  4. // for (item of arr) {}
  5. // item 代表数组中的每一个成员
  6. for(item of lang){
  7. console.log(item);
  8. }
  9. // for (item of lang) console.log(item);
  10. // forEach()遍历数组
  11. // 函数是一个对象, 对象是一个值,是值就可以传递或保存,所以函数可以当成参数,传给另一个函数
  12. // 当函数做为参数是,称为"回调函数"
  13. lang.forEach(function (item, index, array) {
  14. console.log(item, index, array);
  15. });
  16. // 只有第一个参数:数组成员才是必须的
  17. lang.forEach(function (item) {
  18. console.log(item);
  19. });
  20. // 箭头函数
  21. lang.forEach((item) => console.log(item));
  22. // 5. for - in : 遍历对象
  23. let user = { id: 1, "my name": "zhu", age: 18 };
  24. // for (属性/键名 in 对象) {}
  25. for (let key in user) {
  26. console.log(user[key]);
  27. }
  28. </script>

访问器属性

  1. <script>
  2. let user = {
  3. data: { name: "猪老师", age: 18 },
  4. getage() {
  5. return user.data.age;
  6. },
  7. setage(age) {
  8. return user.data.age = age;
  9. },
  10. };
  11. //默认访问方式 console.log(user.data.name);
  12. console.log(user.getage());
  13. user.setage(30);
  14. console.log(user.getage());
  15. // 根据用户的访问习惯 用户更愿意用下面的方式进行访问
  16. // 读 console.log(user.age);
  17. // 写 user.age = 60;
  18. // 使用"访问器属性"将方法伪装成"属性"
  19. user = {
  20. data: { name: "猪老师", age: 18 },
  21. // 在以属性名命名的方法前,添加上get,set将该方法伪装成一个属性
  22. get age() {
  23. return user.data.age;
  24. },
  25. set age(age) {
  26. return user.data.age = age;
  27. },
  28. };
  29. // 读
  30. console.log(user.age);
  31. // 写
  32. user.age = 60;
  33. console.log(user.age);
  34. </script>

DOM 操作

  • document 代表当前 html 文档对象
  • document.querySelectorAll: 返回满足条件的元素集合
  • document.querySelector: 返回满足条件的元素集合中的第一个,通常用来获取某一个元素
  1. <form action="" name="login" id="mylogin">
  2. <!-- 使用对象属性的点语法(name属性)来访问表单中的每个数据 -->
  3. <input type="email" name="email" value="admin@php.cn" />
  4. <button>提交</button>
  5. </form>
  6. <script>
  7. // 怎么获取form元素
  8. // let form = document.querySelector("form");
  9. // form = document.forms[0];
  10. // form = document.forms.item(0);
  11. // form = document.forms.login;
  12. // form = document.forms.mylogin;
  13. // form中id,name功能相同,推荐使用id
  14. // email控件中, name属性,即是后端的变量名,也可以当成id使用
  15. // email 是 name="email",它是name属性的值
  16. // console.log(form.email);
  17. // console.log(form.email.value);
  18. // let value = document.forms.login.email.value;
  19. let value = document.forms.mylogin.email.value;
  20. </script>

dom树的遍历

  • firstElementChild 返回对象的第一个子 元素
  • lastElementChild 返回对象的最后一个子 元素
  • nextElementSibling 返回对象的下一个兄弟 元素
  • previousElementSibling 返回对象的前一个兄弟 元素
  • children 属性返回元素的子元素的集合 是一个 HTMLCollection 对象。
  • childNodes 属性返回包含被选节点的子节点的 NodeList。
  1. <ul class="list">
  2. <li class="item">item1</li>
  3. <li class="item">item2</li>
  4. <li class="item">item3</li>
  5. <li class="item">item4</li>
  6. <li class="item">item5</li>
  7. </ul>
  8. <script>
  9. // dom: 你看到的所有内容都是"节点" 节点类型: 元素,文本,文档
  10. let ul = document.querySelector(".list");
  11. // 查看所有节点(不区分类型)
  12. console.log(ul.childNodes); // 返回 NodeList 节点集合
  13. console.log(ul.children); // 返回 HTMLCollection 元素集合
  14. // ul.children是类数组,需要转为真正的数组才可使用数组方法来遍历
  15. // 转为真数组的二种方式
  16. console.log(Array.from(ul.children));
  17. console.log([...ul.children]);
  18. // [...ul.children].forEach(item => (item.style.color = "red"));
  19. // [...ul.children][0].style.color = "blue";
  20. // ul.firstElementChild.style.background = "yellow";
  21. // ul.firstElementChild.nextElementSibling.style.background = "green";
  22. // ul.lastElementChild.style.background = "yellow";
  23. // ul.lastElementChild.previousElementSibling.style.background = "violet";
  24. </script>

dom元素的创建

  • createElement 方法可创建元素节点。
  • textContent 属性设置或者返回指定节点的文本内容。
  • insertAdjacentElement(‘插入位置’, 元素)
  1. <script>
  2. // 创建元素
  3. // 内存中,页面中不可见
  4. let div = document.createElement("div");
  5. let p = document.createElement("p");
  6. p.textContent = "hello world";
  7. // 添加到页面中
  8. p.append("大家好");
  9. div.append(p);
  10. document.body.append(div);
  11. const li = document.createElement("li");
  12. li.textContent = "第一个";
  13. div.append(li);
  14. // insertAdjacentElement('插入位置', 元素)
  15. // 插入位置有四个
  16. // afterBegin: 开始标签之后,第一个子元素
  17. // beforeBegin: 开始标签之前,是它的前一个兄弟元素
  18. // afterEnd: 结束标签之后,它的下一个兄弟元素
  19. // beforeEnd: 结束标签之前,它的最后一个子元素
  20. const item = document.createElement("li");
  21. item.textContent = "大家再坚持一会";
  22. div.insertAdjacentElement("beforeBegin", item);
  23. const h3 = document.createElement("h3");
  24. h3.textContent = "我有点饿了";
  25. div.insertAdjacentElement("beforeEnd", h3);
  26. </script>

自定义属性: dataset对象

  1. <!-- id,class: 内置/预定义
  2. email, index: 自定义/ 数据属性 -->
  3. <div id="user" class="active" data-email="admin@php.cn" data-index="5">
  4. <h2>Hello world</h2>
  5. </div>
  6. <script>
  7. const div = document.querySelector("#user");
  8. // console.log(div["data-email"]);
  9. console.log(div.dataset.email);
  10. console.log(div.dataset.index);
  11. // dataset对象: 用于获取用户的自定义属性
  12. // 自定义必须使用data-为前缀, 访问时前缀不要写
  13. </script>

css对象 classList

  1. <h2>Hello world</h2>
  2. <style>
  3. .red {color: red;}
  4. .bgc {background-color: yellow;}
  5. .blue {color: blue;}
  6. h2 {border: 5px solid #000;}
  7. </style>
  8. <script>
  9. // 以前添加类
  10. // document.querySelector("h2").className = "red bgc";
  11. const h2 = document.querySelector("h2");
  12. h2.classList.add("red");
  13. h2.classList.add("bgc");
  14. h2.classList.remove("bgc");
  15. h2.classList.replace("red", "blue");
  16. </script>
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!