<div id="box" class="box"></div>
 
-->  var myBox = document.getElementById("box");
 
-->  var myDivList = document.getElementsByTargetName(div);       // 注意    Eelements
 
-->  var myDivs = div.getElementsByClassName("box");                  //注意     Elements
 
 
-->  通过class选:支持IE9+
 
    兼容写法:

    function getElementsByClassName(node,className){
        if(node.getElementsByClassName){
            return node.getElementsByClassName(className)
        }else{
            var results = [];
            var items = node.getElementsByTagName("*");
            for (var i = 0; i < items.length; i++) {
                if(items[i].className == className){
                    results.push(items[i]);
                } 
            };
            return results;
        }
    }

-->   getAttribute();  setAttribute("id","app")

-->   nodeName   nodeValue     nodeType    
     
     元素节点   -->
     getAttributeNode() -->nodeType=2
     文本节点 --> 3
    
    

--> childNodes    firstChild    lastChild    parentNode  nextSiblling
 
--->window打开新窗口:   
 
  

 
 -->  addLoadEvent
 
  

 
 -->三元操作符   
  var a,b;
   if(a > 1){b=a+1}else{b=a-1}  ==>    a>1 ? b = a+1 : b = a - 1;
 
 
-->  document.write 和   innerHTML
 
 
-->  document.creatElement("p");        //创建 元素节点
   document.craeatTextNode();         //创建文本节点
--> parent.appendChild(child)
 
--> parentElement.insertBefore(newElement,targetElement);
--> 自己实现   insertAfter方法:

  function insertAfter(newEl,targetEl){
    var parentEl = targetEl.parentNode;
    if(parentEl.lastChild == targetEl){
      parentEl.appendChild(newEl);
    }else{
      parentEl.insertBefore(newEl,targetEl.nextSibling);
    }
  }

-->  nextSibling    与 自己创建的  getNextElement()函数:

  nextSibling  挨着的节点    利用 nodeType验证      1  对应 元素节点

                             2  对应 属性节点

                           3  对应文本节点

  

  下一个节点元素函数:

  function getNextElement(node){

      if(node.nodeType == 1){

        return node;

       }

      if(node.nextSibling){

        return getNextElement(node.nextSibling);     // 递归

      }

      return null;

  }

-->  addClass方法:

  

  function addClass(node,value){
    if(!node.className){
      node.className = value;
    }else{
      //直接用属性设置
      //node.setAttribute("class",node.className+" "+value)
      newClassName = node.className;
      //classname 之间的空格 不能缺失
      newClassName+=" ";
      newClassName+=value;
      node.className = newClassName;
    }
  }  

-->子元素节点:

  

  function childElement(el){
    var result=[];
    for (var i = 0; i < el.childNodes.length; i++) {
      if(el.childNodes[i].nodeType == 1){
      result.push(el.childNodes[i]);
      }
    };
    return result;

  }

  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
代码书写习惯,
a,  行末逗号
b,  空格缩进
c,  函数名称后无空格
d,  函数参数与括号间无空格
e,  对象字面量的冒号后加空格,冒号前不加
f,  条件语句关键字后加空格 
 
 
 
 
 
 注:截图源于 《 DOM编程艺术第二版》。只做分享,如有侵权,请联系本人,会马上删除!

从零开始 DOM操作 笔记的更多相关文章

  1. [笔记]原生JS实现的DOM操作笔记

    原生JS实现的DOM一系列操作参考: 原生JavaScript封装DOM库 siblings: 原生JS-查找相邻的元素-siblings方法的实现 addClass,removeClass,hasC ...

  2. [javascript]Dom操作笔记

    1.为一个节点同时设置多个属性 $("div[aria-describedby='F53_batch_history']").attr({"display":& ...

  3. jQuery学习笔记之DOM操作、事件绑定(2)

    jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...

  4. HTML 学习笔记 JQuery(DOM 操作)

    一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...

  5. jQuery学习笔记(二)jQuery中DOM操作

    目录 DOM操作分类 jQuery中的各种DOM操作 查找节点 创建节点 删除节点 复制节点 替换节点 包裹节点 属性操作 样式操作 对HTML.文本和值的操作 遍历节点 CSS-DOM操作 小结 本 ...

  6. jquery学习笔记---Dom操作

    一.DOM操作的分类 DOM(document object model)是一种与浏览器.平台.语言无关的接口,使用该接口可以访问页面中的·所有组件.DOM的操作可以分为DOM Core.HTML-D ...

  7. jQuery选择器和DOM操作——《锋利的jQuery》(第2版)读书笔记1

    第1章 认识jQuery jQuery有以下优势: 轻量级: 强大的选择器: 出色的DOM操作的封装: 可靠的事件处理机制: 完善的Ajax: 不污染顶级变量: 出色的浏览器兼容性: 链式操作方式: ...

  8. javascript dom编程艺术笔记第三章:DOM操作的5个基本方法

    JavaScript的 DOM操作,主要是对DOM这三个字母中D.O.M的操作.D代表的是document(文档),即我们可以使用javascript对文档进行操作,O代表的是object(对象),对 ...

  9. JavaWeb学习笔记——jquery中的dom操作

     jquery中的dom操作 废话不说:直接上例子: 1.添加节点-html页面 Append:向每个匹配的元素内部追加内容. <body> <ul id="city& ...

随机推荐

  1. 找出程序GasMileage中的哪一行与下列叙述相对应:

    找出程序GasMileage中的哪一行与下列叙述相对应: a.通知程序将使用Scanner类   import java.util.Scannner; b.创建一个Scanner类的对象   Scan ...

  2. python - 语言介绍

    python 程序的执行过程 python 的实现 Cpython 原始.标准的实现方式 Jython 用于与Java语言继承的实现 Ironpython 用于与.net框架继承的实现 python ...

  3. 集合-LinkedList

    List linkedlist = new LinkedList<>(); LinkedList 底层数据结构是链表. 1. LinkedList 除了实现了List接口外,还实现了双向链 ...

  4. C#如何操作XML文件

    ⒈XML? XML是一种可扩展的标记语言 具有以下特点 1.严格区分大小写 2.标签成对出现 3.有且只有一个根节点 ⒉XML的创建 <?xml version="1.0" ...

  5. 【转】HTTP

    [转]HTTP 一.http概述 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTT ...

  6. Redis(转)

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...

  7. VS2017中用C#调试DLL

    1.首先将DLL工程导入到包含C#应用程序工程的解决方案中 2.将DLL和C#工程都改为[Debug]模式 3.设置DLL工程属性,右键点击DLL工程,选择[属性],选择[常规],将[输出目录]改为C ...

  8. git与eclipse集成之clone远程仓库到本地

    1. Git与Eclipse集成 1.1. Clone远程仓库到本地 1.1.1.        获取远程仓库地址(选择北京,访问速度比深圳快) 1.1.2.        将远程仓库导入到Eclip ...

  9. Lyk Love painting/convex hull/mumsic

    这场比赛真的是...打的好颓废啊... 所有题面的传送门 T1 分析: 我们发现 二分答案 + \(n^3\) \(dp\) 判断可行性 可以拿 60 分(于是就写好了啊!) 然后我们发现上面的 \( ...

  10. 写markdown博客如何将截图快速上传到图床——记一个工具插件的实现(windows版 开源)

    打造一个上传图片到图床利器的插件(Mac版 开源)(2018-06-24 19:44) 更新于2018年2月 做了以下改动: 1.修复了一个bug,把服务器区域做成可配: 七牛有华北,华东,华南以及美 ...