javaScript--DOM

一、JavaScript

  JavaScript这门语言由 DOM、BOM、ECMAScript 组成。

  DOM:document object model 文档对象模型。体现在代码中就是 document 对象。

  BOM:browser object model 浏览器对象模型。体现在代码中就是window对象。

  ECMA:核心语法。包含如何定义变量、循环语句、运算符、表达式、流程控制语句、数据类型。

二、DOM

  我们可以使用 dom 的 getElementById 获取元素。

  我们可以通过 dom 的 onclick、onmousedown、onmouseup 进行事件的设置。

  我们可以通过 dom 的 style 进行样式的设置。。。。。。

2.1  dom 组成

  DOM是由节点组成的。DOM 节点一共有12种,元素/标签仅仅是其中一种。

  全部节点类型(红色需要重点记忆):  

    元素节点        Node.ELEMENT_NODE(1)

    属性节点        Node.ATTRIBUTE_NODE(2)

    文本节点        Node.TEXT_NODE(3)

    CDATA节点         Node.CDATA_SECTION_NODE(4)

    实体引用名称节点    Node.ENTRY_REFERENCE_NODE(5)

    实体名称节点      Node.ENTITY_NODE(6)

    处理指令节点      Node.PROCESSING_INSTRUCTION_NODE(7)

    注释节点        Node.COMMENT_NODE(8)

    文档节点        Node.DOCUMENT_NODE(9)

    文档类型节点      Node.DOCUMENT_TYPE_NODE(10)

    文档片段节点      Node.DOCUMENT_FRAGMENT_NODE(11)

    DTD声明节点      Node.NOTATION_NODE(12) 

2.2  节点类型(.nodeType)

  var oBox = document.getElementById("box");console.log(oBox.nodeType);  //输出结果是1
  文本.nodeType = 3 、注释.nodeType = 8 、文档.nodeType = 9 。

2.3  childNodes 属性

  他指向调用该属性的节点的所有子节点集合。

  高级浏览器会将空白折叠现象形成的空白符也当做一个文本节点。IE不会。

  同意浏览器表现方式:

function getChildNodes(dom) {// 定义一个数组var arr = [];// 先输出所有的节点的类型 如果是3 查看是不是空文本for(var i = 0; i < dom.childNodes.length; i++) {// 判断当前节点的类型是不是文本if(dom.childNodes[i].nodeType === 3) {// 使用正则表达式匹配dom.childNodes[i].data 是不是空白符// 定义正则表达式var reg = /^\s+$/;if(reg.test(dom.childNodes[i].data)) {// 既然是空白符 就不要进入了} else {// 如果是一个文本并且内容不是空的 也要进入数组
                arr.push(dom.childNodes[i]);}} else {// 如果不是文本 直接进入数组
            arr.push(dom.childNodes[i]);}}// 循环体内主要是在检查哪一项是空白 return arr;
}

2.5  节点属性(nodeName、nodeValue)

   元素类型的 nodeName 是该元素的标签名大写字符串(toLowerCase   字符串变小写)。

  文本类型的 nodeName 永远是#text 字符串。

  注释类型的 nodeName 永远是#comment 。

  文档类型的 nodeName 是#document 。

  元素类型的 nodeValue 永远是 null 。

  文本类型的 nodeValue 就是文本的书写内容。

  注释类型的 nodeValue 就是注释内容。

  文档类型的 nodeValue 是 null 。

2.6  节点关系

  节点关系分为:父子、子父、兄弟

  父子:

  parent.childNodes[index] ;//第 index 个子元素parent.firstChild ;  //第一个子节点parent.lastChild ;  //最后一个子节点

  子父:

  child.parentNode;

  兄弟:

  node.previousSibling ;  //前一个兄弟node.nextSibling ;  //下一个兄弟

三、元素操作

3.1  创建元素

  document.createElement(type);

  type:元素类型(标签名)字符串;

  返回值:被创建的元素,天生是一个孤儿节点;

  var p = document.createElement("p");

3.2  上树

  father.appendChild(child);

  child:被追加的子节点

  father:父节点

  最终效果:让 child 到 father 的childNodes 中作为最后一个子元素存在。

  返回值:child。

3.3  下树

  father.removeChild(child);

  child:被删除的子节点。

  father:父节点。

  最终效果:从 father 中将 child 删除。

  返回值:child。

3.4  插入

  insertBefore(newChild, oldChild);

3.5  替换

  father.replaceChild(newChild, oldChild);

  返回值:oldChild

3.6  克隆

  node.cloneNode(boolean)

  boolean:是一个布尔值,如果是 false , 则只复制自身元素,如果是 true 则连子元素一起复制。

四、jQuery 中的元素操作

4.1  创建元素

  使用 $ 函数创建元素

    $("<div id='box' class='ccc' data-info='nihao'>content</div>")

4.2  上树

  jQuery 中的上树分很多种,可以子元素选择父元素,可以父元素选择子元素,可以兄弟选择兄弟。

// 子元素选择父元素
appendTo(selector | jQuery | element)  //往父元素后边追加子元素
prependTo(selector | jQuery | element)  //往父元素前边追加子元素
// 父元素选择子元素
append(selector | jQuery | element)  //往父元素的后边追加
prepend(selector | jQuery | element)  //往父元素的前边追加
// 兄弟之间插入
$("#box").after(selector | jQuery | element | function); //往#box后面放元素
$("#box").insertAfter(selector | jQuery | element); //将#box往后面参数据顶的元素后面放
$("#box").before(selector | jQuery | element | function); //往#box前面放元素
$("#box").insertBefore(selector | jQuery | element ); //将#box往后面参数决定的元素前面放

4.3  warp

  将参数转换成元素,并包裹住$选择的元素 

  $("#s").wrap("<h1></h1>");

4.4  unwarp

  将所选择的的元素的父元素去掉

  $("#s1").unwrap();

转载于:https://www.cnblogs.com/tiaotuo/p/8874566.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机原理及应用课程,课程介绍

《计算机原理及应用》课程的计划学时为70学时&#xff0c;其中课堂授课为58学时&#xff0c;课程实验为12学时。另外&#xff0c;还设置了2周课程综合性实验。三、教学内容(一)理论教学《计算机原理及应用》的课程内容共分为9部分&#xff0c;其具体内容、知识点和课时分配如下…

你真的了解css像素嘛?

在日常开发中&#xff0c;px一定是大家接触过最多的css单位&#xff0c;但是你真的了解px嘛&#xff1f;1px在屏幕中到底是多大呢&#xff1f;另外不知道大家有没有过下面这些疑惑: 为什么一个元素在pc上和移动端的物理尺寸不一样&#xff0c;但是两者的视觉效果上却差不多呢&…

Apache Camel 2.12 –支持后退,以减少较积极的轮询路线

这是另一篇博客文章&#xff0c;介绍了下一个Apache Camel 2.12版本中即将进行的改进和新功能。 在上一个博客中&#xff0c;我谈到了路由直接支持的cron表达式 。 这篇博客文章与之相关&#xff0c;因为我们对轮询路由具有另一个新功能&#xff08;使用计划的轮询使用者&…

django框架概述

------------------MVC与MVT框架------------------- 1、MVCMVC框架的核心思想是&#xff1a;解耦。降低各功能模块之间的耦合性&#xff0c;方便将来变化时&#xff0c;更容易重构代码&#xff0c;最大程度上实现代码的重用。m表示model&#xff0c;重要用于对数据层的封装&am…

小鬼难缠--python小bug备忘

今天编译pyhon做人脸识别&#xff0c;遇到几个问题&#xff0c;做个记录吧。 编译报错&#xff1a; File "harrClassifier.py", line 17, in <module> flagscv2.CV_HAAR_SCALE_IMAGEAttributeError: module object has no attribute CV_HAAR_SCALE_IMAGE 定位根…

mysql for mac中文_mysql for Mac 下创建数据表中文显示为?的解决方法

在我的绝版Mac mini下安装了mysql 5.7版本&#xff0c;实例中&#xff0c;在通过load data 导入数据时发现表中的中文显示为 &#xff1f;通过百度&#xff0c;发现多个版本的解决方法&#xff0c;将其中一个成功解决的方法贴上来&#xff1a;大多方法都是这样&#xff1a;需要…

计算机科学计算方面分为,计算机方面的专业分为哪些类?【资讯与计算科学】和【电脑科学与技术专业】有什么不同?...

计算机方面的专业分为哪些类&#xff1f;【资讯与计算科学】和【电脑科学与技术专业】有什么不同&#xff1f;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;计算机方面的专业分为哪些类&am…

Java异常处理教程(包含示例和最佳实践)

异常是可能在程序执行期间发生的错误事件&#xff0c;它会破坏其正常流程。 Java提供了一种健壮且面向对象的方式来处理异常情况&#xff0c;称为Java异常处理 。 我们将在本教程中研究以下主题。 Java异常处理概述 异常处理关键字 异常层次 有用的异常方法 Java 7自动资源…

GMTC 大前端时代前端监控的最佳实践

本文来自阿里云前端监控团队&#xff0c;转载请注明出处本文为2018年6月21日&#xff0c;在北京举办的GMTC(全球大前端技术大会)&#xff0c;下午性能与监控专场&#xff0c;由阿里云前端监控团队前端技术专家彭伟春带来的演讲稿&#xff0c;现场反馈效果非常好&#xff0c;地上…

mysql有子查询么_sql-带有子查询的mysql更新查询

谢谢&#xff0c;我不知道使用INNER JOIN进行更新。在原始查询中&#xff0c;错误是要命名子查询&#xff0c;该子查询必须返回一个值&#xff0c;因此不能使用别名。UPDATE CompetitionSET Competition.NumberOfTeams (SELECT count(*) -- no column aliasFROM PicksPointsWHE…

『性能测试』文章大汇总

为了方便阅读&#xff0c;我重新整理本文&#xff0c;将包含本博客所有与性能测试有关的内容。 ------------------------------------------- 近两年市面上的性能测试书籍很多了&#xff0c;但大部分书都在讲loadrunner的操作技巧项目与项目实践。我不认为有什么问题&#xff…

Alpha阶段敏捷冲刺②

1.提供当天站立式会议照片一张 每个人的工作 &#xff08;有work item 的ID&#xff09;&#xff0c;并将其记录在码云项目管理中&#xff1a; 昨天已完成的工作。 购买云服务器 注册账号 界面布局初步规划 今天计划完成的工作。 界面雏形设计 数据库初步设计 完成后端框架初步…

html iframe post,使用Jquery和IFrame的跨子域请求(GET,POST,…)

我正在尝试在我的主域(http://foo.com)和我的API(http://api.foo.com)之间开发请求.为了绕过关于跨子域内容的限制,我在主页(http foo.com/main.html)上使用iframe,指向iframe.html页面&#xff1a;scripts.api.foo.com.(scripts.api.foo.com和foo.com在同一台服务器上,api.foo…

透明地持久保存并从数据库中检索加密的数据

自从我在这里发表上一个帖子以来已经有两个多月了&#xff0c;但是今年六月和七月非常忙碌而密集。 首先&#xff0c; Confitura的组织&#xff08;欧洲最大的Java开发人员免费会议&#xff09;参加了我所有的免费晚会&#xff0c;然后在相当紧张的住院期间&#xff0c;我们的第…

[译] 2017 年比较 Angular、React、Vue 三剑客

原文地址&#xff1a;Angular vs. React vs. Vue: A 2017 comparison原文作者&#xff1a;Jens Neuhaus译文出自&#xff1a;掘金翻译计划本文永久链接&#xff1a;https://github.com/xitu/gold-miner/blob/master/TODO/angular-vs-react-vs-vue-a-2017-comparison.md译者&…

centos 离线安装mysql_CentOS6离线安装mysql-5.7.25

1.mysql-5.7.25-1.el6.x86_64.rpm-bundle.tar下载百度云资源提取码&#xff1a;ej1y2.把下载的mysql安装包上传到Centos上解压mysql&#xff0c;我这是在Windows上解压的上传到Centos上&#xff0c;我在Centos上解压mysql不知道为什么少了rpm -ivh mysql-community-common-5.7.…

Linux自动化之Cobbler补鞋匠安装

cobbler介绍&#xff1a; 快速网络安装linux操作系统的服务&#xff0c;支持众多的Linux发行版&#xff1a;Red Hat、 Fedora、CentOS、Debian、Ubuntu和SuSE&#xff0c;也可以支持网络安装windows PXE的二次封装&#xff0c;将多种安装参数封装到一个菜单 Python编…

html5中音频的标签,html5中的音频标签安全

有点.Grooveshark向正在流式传输的MP3的服务器端脚本发送POST请求,这使得很难在不自动创建POST请求的情况下访问和欺骗,特别是看到您将不得不尝试存储音频文件那是收集的.但是您可以使用新的AudioContext来帮助大多数现代平台解决这个问题我使用HTML5Rocks.com的一个很好的例子…

如何以10倍速加速Apache Xalan的XPath处理器

一段时间以来&#xff0c; Apache Xalan中存在一个令人尴尬的错误&#xff0c;该错误是XALANJ-2540 。 此错误的后果是Xalan每次XPath表达式求值将内部SPI配置文件加载数千次 &#xff0c;可以很容易地进行如下测量&#xff1a; 这个&#xff1a; Element e (Element)documen…

反射例子(配置文件)

配置文件 className fanshe.Student1 showInfo show1 类student1 public class Student1 {public Student1() {System.out.println("调用了Student1 无参构造函数");}public void show1(){System.out.println("调用了show1()方法");} } 测试类 public cl…