转行学开发,代码100天——2018-04-14

JavaScript中DOM操作基础知识即对DOM元素进行增删改操作。主要表现与HTML元素的操作,以及对CSS样式的操作。其主要应用知识如下图:

通过对DOM的基本了解,还要通过代码实现对DOM的操作。

1.childNodes + nodeType 与children的区别

    <ul id= "ull">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>

通过对ul下li标签(也是本文中节点)获取,比较两者的不同

//子节点
var oUl = document.getElementById("ull");
alert(oUl.childNodes.length); // 输出11 ,自动计算了文本元素(空)
alert(oUl.children.length); //输出了5 ,不计算空文本,且只计算直接子节点

即childNodes 方法获取的子节点包含了空文本,而children方法获取的子节点不包括空文本,且只是父节点的直接直接点,即如果li节点下有其他元素,输出的结果也为5.

nodeType 返回节点的类型

如:

for (var i = 0; i < oUl.childNodes.length; i++) {
alert(oUl.childNodes[i].nodeType); //3/1交替出现
}

对于前面的HTML文档结构,循环输出的将是3,1,3,1...

由此也可以说明,通过childNodes获取到的节点包含了文本元素,即这里的空文本。

若改为children,则

for (var i = 0; i < oUl.children.length; i++) {
alert(oUl.children[i].nodeType);
}

输出的全是1,即全是元素。

因此,可以通过oUl.childNodes[i].nodeType == 1的判断,对元素进行单独操作。

2.父节点:parentNode与offsetParent

parentNode:获取元素的父节点

如:

    <ul id= "ull">
<li>afs<a href="javascript:;">隐藏</a></li>
<li>fdgd<a href="javascript:;">隐藏</a></li>
<li>3sdfsd<a href="javascript:;">隐藏</a></li>
<li>24rsdfsd<a href="javascript:;">隐藏</a></li>
<li>tsdfasga5<a href="javascript:;">隐藏</a></li>
</ul>

通过getElementsByTagName("a") 方法获取所有a节点,给a节点添加鼠标点击事件——隐藏。

通过当前a节点的父节点显示样式设置为“none”实现其整行隐藏。

 //父节点
parentNode
var oA = document.getElementsByTagName("a");
// alert(oUl.parentNode);//body
alert(oA.length);
for (var i = 0; i < oA.length; i++) {
oA[i].onclick = function()
{
this.parentNode.style.display = "none";
}
}

offsetParent :获取绝对定位元素的父节点。如果父节点没有绝对定位,则获取有绝对定位的父节点,直至body。

如下图父子方块

HTML&CSS

若div1无绝对定位,修改margin时,只是div1移动;若添加绝对定位position:relative时,修改margin时两个盒子相对移动。

绝对定位:

相对定位:

3.首位子节点

firstChild firstElementChild

lastChild lastElementChild

整两个获取子元素的方法有兼容性问题,(在使用时需要使用if语句进行判断)

oUl.firstChild.style.background ="red"; //ie7-ie8
oUl.firstElementChild.style.background = "red";//chrome ie9以上

因此,为了适用于多种浏览器,可以如下修改。

            var oUl = document.getElementById("ull");
if (oUl.firstElementChild) {
oUl.firstElementChild.style.background = "red";//chrome ie9以上
}else{
oUl.firstChild.style.background ="red"; //ie7-ie8
}

///

其他子元素的操作如此类似。

day29—JavaScript中DOM的基础知识应用的更多相关文章

  1. javascript中DOM部分基础知识总结

    1.DOM介绍      1.1 DOM概念      文档对象模型(Document Object Model),它定义了访问和处理HTML文档的标准方法.现在我们主要接触到的是HTML DOM. ...

  2. javascript中BOM部分基础知识总结

    一.什么是BOM      BOM(Browser Object Document)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管 ...

  3. JavaScript中BOM的基础知识总结

    一.什么是BOM      BOM(Browser Object Model)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管理窗口 ...

  4. JavaScript中数组的基础知识和相关方法

      数组基础 数组是大多数语言里面最常见的一种数据结构,它是一个有序的值列表. 创建数组 1.创建字面量数组 let arr=[]; 2.创建构造函数数组 let arr=new Array(); 注 ...

  5. ASP.NET中的C#基础知识

    ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...

  6. MySQL中索引的基础知识

    本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...

  7. javascript DOM 操作基础知识小结

    经常用到javascript对dom,喜欢这方便的朋友也很多,要想更好的对dom进行操作,这些基础一定要知道的.   DOM添加元素,使用节点属性  <!DOCTYPE html PUBLIC ...

  8. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

  9. Javascript中DOM技术的的简单学习

    第十四课DOM技术概述1:DOM概述 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节 ...

随机推荐

  1. Python函数装饰器原理与用法详解《摘》

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  2. JavaBean简介和要求

    JavaBean是一种Java语言写成的可重用组件. 所谓javaBean,是指符合如下标准的Java类: 类是公共的 有一个无参的公共的构造器 有属性,且有对应的get.set方法 用户可以使用Ja ...

  3. linux驱动模型——platform(1)

    一.驱动模型包含什么? 1.1. 类class 1.1.2. 它能够自动创建/dev下的设备节点,不需要mknod /dev/xxx c x x创建.当然class还有其另外的作用,且自动创建设备节点 ...

  4. Codeforces 1159F Winding polygonal line(叉积)

    其实这个几何写起来还是比较方便,只用到了叉积.首先我们贪心的考虑一种情况,对于任意给定的LR串,我们起点的选择肯定是在这些点围成的凸包端点上,对于这样的起点来说,他对于L或者R都是有选择的机会,而且一 ...

  5. Appium+Python之生成html测试报告

    思考:测试用例执行后,如何生成一个直观漂亮的测试报告呢? 分析:1.unittest单元测试框架本身带有一个textTestRunner类,可以生成txt文本格式的测试报告,但是页面不够直观 2.我们 ...

  6. SCUT - 31 - 清一色 - dfs

    https://scut.online/p/31 还是不知道为什么RE了.的确非常玄学. 重构之后就没问题了.果然写的越复杂,分的情况越乱就越容易找不到bug. #include<bits/st ...

  7. Vue+Element-Ui 异步表单效验

    简单的效验 Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名 /* ruleForm :表单绑定的数 ...

  8. VMware新加网卡NAT连接(内网)出现本机与虚拟机ping不通的问题

    今新加网卡NAT连接,配置好之后始终出现eth1:link is not ready. 虚拟机与本机不能建立连接. 解决方案:windows里面打开服务开启VMware NAT Service,并关闭 ...

  9. vue.js 笔记

    <!-- 多层for循环 --> <ul> <li v-for="(ite,key) in list2"> {{key}}-------{{it ...

  10. springboot2.0整合redis的发布和订阅

    1.Maven引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...