一、JavaScript的三个重要组成部分

(1)ECMAScript(欧洲计算机制造商协会)

  制定JS的规范

(2)DOM(文档对象模型)重点学习对象

  处理网页内容的方法和接口

(3)BOM(浏览器对象模型)  存在兼容性问题

  与浏览器进行交互的方法和接口

1、DOM定义

  为js操作html元素而制定的规范,DOM树如下图

2、节点

  整个文档是一个文档节点

  每一个标签是一个元素节点

  标签中的文字是一个文字节点

  标签中的属性是一个属性节点

3、访问节点的方法

  getElementById();      获取id对应的元素节点  只有他是的返回值是唯一的,也就是说是一个变量,其余返回值全是数组,切记!

  getElementsByTagName();  获取标签数组  例如 :div   ul   a

  getElementsByName();    获取name对应的元素节点数组

  getElementsByClassName();获取class对应的元素节点数组    有兼容性问题,所以我们要自己封装一个获取class类的方法

  getElementById().getElementsByClassName();  获取某个ID下的class数组

  getElementById().getElementsByTagName();  获取某个id下的标签数组

4、封装自己的获取class类的方法

  原理:其实就是遍历文档中的所有标签,从这些标签中找到与自己class类一样的类。

  兼容性问题:就是getElementsByClassName();有兼容性问题,但是我们在高级浏览器中还是可以用的

  代码:

function getClass(classname) {
//如果浏览器支持这个方法,我们还是不要浪费他的高性能,尽量使用
if (document.getElementsByClassName) {
return document.getElementsByClassName(classname);
}
//如果不能支持
var arr = [];
var dom = document.getElementsByTagName("*");
for (var i = 0; i < dom.length; i++) {
var txt = [];
txt = dom[i].className.split(" ");
for (var j = 0; j < txt.length; j++) {
if (txt[j] == classname) {
arr.push(dom[i]);
}
}
}
return arr;
}

5、访问关系(这样的好处是能省去起名的痛苦)

  (1)父亲点

<script>
window.onload = function(){
var x = document.getElementById("x");
x.onclick = function(){
this.parentNode.style.display = "none";
//关掉的是他的 父亲 this.parentNode 这种方法还是比较厉害的,能节省一个盒子的id起名
      } 
  }
</script>

  (2)兄弟节点  

    nextSibling  下一个亲兄弟    亲的       IE 678 认识

    nextElementSibling   其他浏览器认识的

    previousSibling   同理  上一个兄弟

    previousElementSibling

   (3)子节点(这个容易报错  不怎么用)    

    firstChild    第一个孩子  ie678

    firstElementChild  第一个孩子   正常浏览器

    var one.firstElementChild || one.firstChild;

    lastChild

    lastElementChild

  (4)孩子节点(这个比较常用,虽然有点小问题)

    childNodes    选出全部的孩子——元素节点   文本节点   属性节点

    childNodes:它是标准属性,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本节点     (嫡出)

    火狐 谷歌等高本版会把换行也看做是子节点

    利用  nodeType == 1   时才是元素节点     来获取元素节点

    

    (重要)children   选取所有的孩子——只有元素节点;这个更好 跟喜欢它  。 (庶出)   但是ie 678  包含 注释节点     这个要避免开。

6、DOM节点操作部分(非常重要)

  创建节点   插入节点   删除节点  克隆节点

             谁要添加   谁要删除  谁要克隆

  (1)创建节点(是插入的根基)

    document.createElement(类型);

    举例:var div = document.creatElement(“li”);   生成一个新的  li 标签

  (2)插入节点

    ①appendChild()  默认插入到最后面

      

    ②insertBefore(插入节点,参照节点)

      如果第二个参数不为空,则将插入节点放到参照节点的前面;如果第二个参数  为 null  则 默认这新生成的盒子放到最后面。

  (3)删除节点

    removeChild()

  (4)克隆节点

    cloneNode(bool);   参数为false,浅层复制,只复制父亲,不复制儿子;  参数为true时,深层复制,包括儿子一起复制。

JS操作DOM对象——JS基础知识(四)的更多相关文章

  1. js操作DOM对象

    js操作DOM对象  (Document Object Model)文档对象模型 nodeType返回值 1:元素节点 2:属性节点 3:文本节点 8:注释节点 9: 文档节点 nodeName 节点 ...

  2. 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)

    [JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...

  3. JavaScript基础15——js的DOM对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 原生js操作DOM基础-笔记

    原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...

  5. js的DOM对象

    1.js的Array对象           ** 创建数组(三种)                          - var arr1 = [1,2,3];                    ...

  6. 前端之JavaScript:JS之DOM对象三

    js之DOM对象三   一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如    for(var i = 0;i<ele.length;i++){} 第二种:for ...

  7. 前端之JavaScript:JS之DOM对象二

    继续JS之DOM对象二 前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement(' ...

  8. 前端之JavaScript:JS之DOM对象一

    js之DOM对象一 一.什么是HTML  DOM HTML  Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM 把 ...

  9. 框架操作DOM和原生js操作DOM比较

    问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...

随机推荐

  1. System.IO命名空间,用于文件/流的处理。

    主要类的介绍:1  Path类——静态实用类,用于处理路径名称.2 File类和FileInfo类● File —— 静态实用类,提供许多静态方法,用于移动.复制和删除文件.● FileInfo —— ...

  2. nginx proxy优化

    常用优化要点 当nginx用于反向代理时,每个客户端将使用两个连接: 一个用于响应客户端的请求,另一个用于到后端的访问: 如果机器是两核CPU,例如: 1 2 $ grep ^proces /proc ...

  3. HDU 5652 India and China Origins 二分优化+BFS剪枝

    题目大意:给你一个地图0代表可以通过1代表不可以通过.只要能从第一行走到最后一行,那么中国与印度是可以联通的.现在给你q个点,每年风沙会按顺序侵蚀这个点,使改点不可通过.问几年后中国与印度不连通.若一 ...

  4. @property(nonatomic) UIViewAutoresizing autoresizingMask;

    在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高. 1 2 3 4 5 6 7 8 9 enum  ...

  5. checking for known struct flock definition... configure: error: Don't know how to define struct flock on this system, set --enable-opcache=

    在对php进行安装的过程中出现如下错误: 1.报错信息: 1 checking for known struct flock definition... configure: error: Don't ...

  6. Tomcat服务器

    常见的web服务器 1. WebLogic是BEA公司的产品,是目前应用最广泛的web服务器,支持J2EE规范(J2EE里有13种技术),商业产品,收费的.银行,证券等对并发,安全要求高的时候用,一般 ...

  7. JAVA-基本知识

    1.JAVA跨平台 其实就是在每个平台上要安装对应该操作系统的JVM,JVM负责解析执行,即实现了跨平台.JVM是操作系统与java程序之间的桥梁. 2.JRE:java运行环境,包含JVM+核心类库 ...

  8. tab奇偶行颜色交替+插件

    (function($){ $.fn.tableUI=function(options){ var defaults={ evenRowclass:"evenRow", oddro ...

  9. ReactiveX序列——RxSwift 浅析

      ReactiveX序列——RxSwift Swift是苹果公司新推出的一门现代化的编程语言,并且将其开源出来了,Swift具有很多的优点,这也使得这门语言推出的短时间引起了很大反应的原因,在最近的 ...

  10. 借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。

    rz 是将window文件传到linux服务器上,到执行rz命令的目录 sz 可以将linux文件发送到windows上,可以选择目录. https://www.google.com/ncr 登录一下 ...