博客列表 >深入理解构造函数原型以及dom元素操作

深入理解构造函数原型以及dom元素操作

Jason Pu?
Jason Pu?原创
2021年01月07日 19:25:57662浏览

一:构造函数的原型与对象原型之间的区别与联系

构造函数是一个创建对象的工厂,构造函数有一个属性叫prototype(原型),所有类实例共享的成员,都应该写到构造函数的原型上, 实例的原型永远指向它的构造函数的原型,实例的原型从构造函数的原型继承属性和方法,如果你new一个实例对象出来,在实例对象当中找不到一个属性,它会到原型上面去找,也就是实例的对象原型是继承自构造函数原型

  1. function UserInfo(name,age){
  2. this.name=name;
  3. this.age=age;
  4. }

给构造函数原型添加一个原型属性:

  1. UserInfo.prototype.national="China";

//用构造函数实例化一个对象:

  1. const newUser = new UserInfo('小张',18);

给实例对象添加一个原型属性,它会指向它的构造函数的原型,也就是实例的对象原型是继承自构造函数:

  1. newUser.__proto__.region="Guangdong";
  2. console.log(newUser.national,newUser.region);//China Guangdong

但是给实例对象添加一个和原型属性相同的属性名字,则会覆盖掉原型属性

  1. newUser.region="Guangxi";
  2. console.log(newUser.national,newUser.region);//China Guangxi

二:常见获取dom元素的方法

1:传统的方式:

  1. document.getElementById //ID选择器
  2. document.getElementsByClassName //类名选择器
  3. document.getElementsByName //name选择器
  4. document.getElementsByTagName //标签选择器

2:querySelector:返回匹配的元素集合中的第一个元素,(返回一个)
例如用querySelector操作以下html代码中第一个li:

  1. <ul>
  2. <li>1</li>
  3. <li>2</li>
  4. <li>3</li>
  5. <li>4</li>
  6. <li>5</li>
  7. </ul>

js代码如下:

  1. li = document.querySelector("li");
  2. li.style.color="red";//如图第一个li变红了


3:querySelectorAll:返回匹配的元素集合所有成员
例如操作所有li的背景色:

  1. ls=document.querySelectorAll("li");
  2. ls.forEach(element => {
  3. element.style.backgroundColor="red";
  4. });

三:dom元素的增删改查

1.基本语法:
1.1:创建元素使用:document.createElement(“要创建的元素”);
1.2:添加到页面:parent.appendChild(“要添加的新元素”);
1.3:html语句插入:parent.insertAdjacentHTML(“插入位置”,””插入的语句),有四种位置可以插:

语句 位置
beforeBegin 插入到标签开始前
afterBegin 插入到标签开始标记之后
beforeEnd 插入到标签结束标记前
afterEnd 插入到标签结束标记后

1.4:创建虚拟的节点对象document.createDocumentFragment();
1.5:元素插入:insertAdjacentElement(“插入位置”,””插入的元素);
1.6:更新:parentNode.replaceChild(newChild, oldChild);
1.7:移除:node.removeChild(child);

2.实战部分:
明白了基本语法,我们就可以实战一下:
以以下html为例:

  1. <ul id="list">
  2. <li>items1</li>
  3. <li>items2</li>
  4. <li>items3</li>
  5. <li>items4</li>
  6. <li>items5</li>
  7. <li>items6</li>
  8. </ul>

1.增:

  1. const ul=document.querySelector("#list");
  2. const li=document.createElement("li");
  3. ul.appendChild(li);
  4. li.innerText="imNew";
  5. li.style.color="red";

或者可以试试新方法:

  1. let str="<li>我是新来的</li>";
  2. ul.insertAdjacentHTML("beforeEnd",str);

效果如下:

2.改:

  1. let h4 = document.createElement("h4");
  2. h4.innerText="我是h4";
  3. document.querySelector("li:nth-of-type(1)").replaceWith(h4);

或者:

  1. let changeChild = document.querySelector("li:first-of-type");
  2. ul.replaceChild(h4,changeChild);

效果如下:

3.删:

  1. let rem = document.querySelector("#list h4");
  2. ul.removeChild(rem);

好了,这下我们的h4不见了

4:js中dom的查询方法:
1.语法:

语句 说明
.children 获取所有子元素
.firstElementChild 获取第一个子元素:
.lastElementChild 最后一个
.parentElement 获取元素的父亲
.previousElementSibling 获取前一个兄弟
.nextElementSibling 获取最后一个兄弟

例如我们要获取以下第三个li的最后一个兄弟元素的innerHTML内容:

  1. <ul id="list">
  2. <li>items1</li>
  3. <li>items2</li>
  4. <li>items3</li>
  5. <li>items4</li>
  6. <li>items5</li>
  7. <li>items6</li>
  8. </ul>
  9. <script>
  10. let li=document.querySelector("li:nth-of-type(3)");
  11. console.log(li.nextElementSibling.innerHTML);//items4
  12. </script>

上一条:京东商城实例下一条:Js的基础语法
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议