博客列表 >JS常用操作知识——for循环——JS中的‘类’——DOM的操作

JS常用操作知识——for循环——JS中的‘类’——DOM的操作

小雨丶
小雨丶原创
2021年01月07日 17:54:22940浏览
循环
  1. do——white
  2. 入口判断
  3. while(条件语句){执行语句}
  4. 出口判断://至少执行一次
  5. do{执行语句}while{条件语句}
  6. for 循环
  7. for(循环条件){
  8. 执行语句
  9. }
对象循环使用的是for——in
  1. for(let key in obj){执行语句} // key 代表的是键值对 (对象中的数据以键值对的形式存在)
  2. for——in 也可以用于遍历数组
在ES6中遍历用for-of
  1. for(let item of obj){执行语句} // 遍历数组时,item是值
  2. 对象的遍历:需要添加迭代才能用for——of遍历
函数的原型属性prototype
  1. 构造函数中使用,用来创建对象
  2. 构造函数必须使用new调用,new的过程就是创建一个对象的过程,这个过程叫类的实例化
  3. // 声明一个构造函数
  4. function User(name, email) {
  5. // 创建一个新对象,用this来表示
  6. const this = new User; // 这个步骤是代码自动执行的,不需要自己写
  7. // 初始化对象,给这个对象添加自定义属性,用来区分实例
  8. this.name = name;
  9. this.email = email;
  10. return this; // 最后步骤,也是系统自动执行,不需要自己写
  11. }
  12. 实例的原型属性prototype指向构造函数的原型属性prototype,实例都是继承的构造函数
  13. 构造函数的自定义属性等级大于实例中的
  14. 属性不应该共享,它是用来区分实例的
  1. JS中的类是语法糖,不是真的开发语言中的类,是用构造函数来模拟类
  2. constructor(name, email) {
  3. this.name = name;
  4. this.email = email;
  5. }
  6. 类中的静态方法: 实例中直接调用
  7. static userName = '姓名';
  8. static fetch() {
  9. // this指向的是是类
  10. return { name: this.userName };
  11. }
  12. 类中的私有成员,访问有限制:可以用器访问属性调用并返回,其他实例就可以调用器访问属性来操作私有成员
  13. #age = 40; // 用#定义
类的继承
  1. 重点extends supper
  2. 不能访问私有成员
  3. class 子类 extends 父类{
  4. constructor(name, email, gender) {
  5. supper(name, email); // 调用父类的,没有supper不行
  6. this.gender = gender;
  7. }
  8. }
  9. ***迭代器***
  10. function myIterator(data){
  11. // 迭代器中必须要有一个next()方法
  12. return{
  13. next(){
  14. // done: 表示遍历是否完成
  15. // value: 当前遍历的数据
  16. let done = i >= data.length;
  17. let value = !done ? data[i++] : undefined;
  18. return { done, value }
  19. }
  20. }
  21. }
  22. ***********
DOM获取
  1. HTML结构
  2. <ul id="list">
  3. <li class="item">item1</li>
  4. <li class="item">item2</li>
  5. <li class="item">item3</li>
  6. <li class="item">item4</li>
  7. <li class="item">item5</li>
  8. </ul>
  9. // 使用css选择器是最直观的

获取满足条件所有元素

  1. const lis = document.querySelectorAll('#list li');
  2. console.log(lis);
  3. //Nodelist是浏览器内置的集合类型,属性类数组,
  4. let lisArr = Array.from(lis); // 变成真数组 let larr = [...lis];也可以变成真数组
  5. Nodelist可以用forEach遍历
  6. lis.forEach(function(要遍历的值item,值的索引index,要遍历的数组arr) => console.log(item));
  7. let first = document.querySelectorAll('#list li:first-of-type'); // 得到的是一个集合

获取满足条件的第一个元素

  1. document.querySelector('#list li');

能快捷获取的元素

  1. document.documentElement
  2. .head
  3. .body
  4. .title
  5. .forms // 返回的是个集合
  6. .images // 所有的图片
DOM增删改查
  1. 创建:li = document.createElement();
  2. 添加:dom.appendChild(li);
  3. 给创建的li添加内容:li.innerHTML = "<i>内容</i>";
  4. 添加文本: li.innerText = '文本';
  5. 创建的另一种
  6. // 将标签写进一个变量——字符串形式
  7. let htmlStr = '<li class="item">item6</li>';
  8. ul.insertAdjacentHTML("beforEnd", htmlStr); // beforEnd是结束之前的位置
  9. // 节点形式
  10. ul.insertAdjacentElement("afterBegin", li);
  11. 大量添加元素方法
  12. const frag = document.createDocumentFragment(); // 或者用 const frag = new DocumentFragment();
  13. for(let i=0;i<5;i++>) {
  14. const li = document.createElement('li');
  15. li.textContent = "Hello" + (i+1);
  16. frag.appendChild(li);
  17. }
  18. ul.appendChild(frag);
  19. 更新
  20. let h3 = document.createElement('h3');
  21. document.querySelector('li:nth-of-type(3)').replaceWidth(h3); // 更改第三个
  22. ul.replaceChild(h3, document.querySelector('li:last-of-type')); // 更改最后一个
  23. 删除
  24. ul.removeChild(document.querySelector('#list h3'));
  25. 查询
  26. 获取所有子元素: ul.children;
  27. 获取所有子元素数量:ul.children.length;//或者 ul.childElementCount;
  28. 获取第一个子元素
  29. ul.firstElementChild;
  30. 最后一个
  31. ul.lastElementChild;
  32. 获取父节点
  33. 子节点.parentElement;
  34. 前一个兄弟节点
  35. const nth_jiu = document.querySelector('#list li:nth-of-type(9)'); // 拿到第九个子节点
  36. nth_jiu.previousElementSibling.innerHTML;
  37. 后一个兄弟节点
  38. nth_jiu.nextElementSibling.innerHTML;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议