博主信息
博文 37
粉丝 1
评论 0
访问量 41471
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
深入理解构造函数原型以及dom元素操作
Jason Pu?
原创
891人浏览过

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

构造函数是一个创建对象的工厂,构造函数有一个属性叫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>

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学