DOM基本操作(下)

核心DOM:不带HTML开头的类型中定义的属性和方法
HTML DOM:在带HTML开头的类型中定义的属性和方法

	元素:-->HTMLXXXElement的原型
               -->HTMLElement的原型——所有HTML元素的父类型
          以上是HTML DOM,以下是核心DOM
			-->Element的原型——所有元素的父类型
            -->Node的原型——所有节点的父类型

一切从属性获取的值和设置到属性上的值必须都是字符串
所以,都要先类型转换,再计算

获取元素的属性值:4种:
1. var strValue=elem.getAttribute(“属性名”);
何时使用:只找一个属性值时
2. elem.attributes集合:包含了当前元素所有属性的节点对象
elem.attributes[i/“属性名”]–>返回一个属性节点对象
elem.attributes[i/“属性名”].value–>属性值
何时使用:遍历一个元素所有属性时
3. elem.getAttributeNode(“属性名”)–>返回一个属性节点 elem.getAttributeNode(“属性名”).value–>返回属性值

修改元素的属性值:2种:
1. elem.setAttribute(“属性名”,“属性值”);
何时使用:只设置一个属性值时
2. elem.setAttributeNode(属性节点对象)

移除元素的属性:2种:
1. elem.removeAttribute(“属性名”)
2. elem.removeAttributeNode(属性节点)

判断是否包含指定属性:1种:
1. elem.hasAttribute(“属性名”)–>有,true;没有,false

节点四个属性

  • nodeName 元素的标签名 大写 只读不能写 获得当前节点的名称
  • nodeValue 元素的文本内容 text节点和comment节点起作用 可读写 对元素节点无效 :如果是元素节点:返回null
  • nodeType 节点类型 返回的是一个数字
    ELEMENT_NODE: 1;
    TEXT_NODE: 3;
    ATTRIBUTE_NODE: 2;
    DOCUMENT_NODE: 9
  • attributes 节点的属性集合 类数组

查找元素节点

1.按HTML属性查找

var ele = document.getElementById('id值');
var eles = document.getElementsByTagName('标签名');//无兼容问题,可查找直接子元素,也可查找所有的子代元素(HTMLCollection)动态集合
var eles = document.getElementsByClassName('类名');//IE8及以下不兼容
var eles = document.getElementsByName('name属性');//旧浏览器只有部分标签才可使用
//getElementsXXX 返回的是(HTMLCollection)动态集合,可循环长度

2.Selector API
利用css选择器查找任意元素的方法【jquery的核心】,有实时性问题

var ele = document.querySelector(‘选择器’);//只需返回第一个匹配的元素对象,只能查找一个是使用
var eles = document.querySelectorAll(‘选择器’);//返回所有符合选择器的元素对象(包括完整对象属性的集合)【非动态集合】

querySelector ()的缺点:

querySelector ()所得结果不是实时的,所以当我们动态地添加一个匹配该选择器的元素的时候,元素集合不会更新;

 var div1 = document.querySelector('div');
 var div2 = document.getElementsByTagName('div');
 var newEle = document.createElement('div');
 document.body.appendChild(newEle);
 div1.length === div2.length; //false

querySelectorAll () 的缺点:
1.其结果集不能调用Node方法上获得元素,要用for遍历解决;
2.返回的结果是一个NodeList,不是数组。
使用它的元素时要将其结果集转为数组,或者从Array原型上借用方法

   Selector API vs getElementxxx
   效率:getElementxxx效率最高
   易用:Selector API更容易使用,便于反复查找
   如果只找一次就可获得元素时,用getElementxxx
   如果需要反复查找才能获得元素时,用 Selector API

创建和删除节点:——核心DOM

  1. 创建单个节点:3步:

    1. 创建空节点对象:
      var elem=document.createElement(“标签名”);
    2. 设置关键属性:(可选)
      比如:a.href=“http://baidu.com”;
      a.innerHTML=“go to baidu”;
      go to baidu
    3. 将新节点挂到指定父元素下:3种
      追加: parent.appendChild(elem); elem–>lastChild
      插入: parent.insertBefore(elem,oldElem);
      替换: parent.replaceChild(elem,oldElem);

    减少修改DOM树(第3步)的次数,可减少排版引擎渲染页面的次数,可提高执行效率。
    解决:将所有子元素都添加到父元素下后,再将父元素一次性加入页面。

  2. 添加多个平级子元素:3步:
    1.先创建一个文档片段:
    文档片段:内存中临时保存多个节点对象的空间
    内存中一个临时的父元素
    var frag=document.createDocumentFragment();

    2.将创建的子元素,先加入到片段中: frag用法同普通父元素
    frag.appendChild(newElem);
    frag.insertBefore(xxx,xxx);
    frag.replaceChild(xxx,xxx);

    1. 将文档片段作为整体,添加到页面制定父元素下
      片段不出现在DOM树中,也不会出现在页面上
  3. 删除节点:
    var 子节点对象=parent.removeChild(子节点对象);
    var 子节点=子节点.parentNode.removeChild(子节点);
    检测是否有节点
    hasChildNodes()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值