• Javascript Dom 相关知识整理


    一、选择器

    document.getElementById

    document.getElementsByTagName

    document.getElementsByClassName(IE 9)

    document.getElementsByName

    document.querySelector(IE 8)

    document.querySelectorAll

    querySelector和getElementBy系列的不同之处:

    1. querySelector 属于W3C的Selectors API 规范,getElementBy 属于W3C的DOM API 规范

    2. querySelector 被IE 8+浏览器支持,getElementsByClassName 被IE 9+支持

    3. querySelector接收CSS选择器作为参数

    4. querySelectorAll 返回的是一个static node list,而getElementsBy 返回的是一个 live node list。下面的demo 2将导致无限循环

     1 var ul = document.querySelectorAll('ul')[0],
     2     lis = ul.querySelectorAll("li");
     3 for(var i = 0; i < lis.length ; i++){
     4     ul.appendChild(document.createElement("li"));
     5 }
     6 
     7 // Demo 2
     8 var ul = document.getElementsByTagName('ul')[0], 
     9     lis = ul.getElementsByTagName("li"); 
    10 for(var i = 0; i < lis.length ; i++){
    11     ul.appendChild(document.createElement("li")); 
    12 }

    二、DOM对象的属性

    1. getAttribute和setAttribute可以设置dom对象的属性,支持IE 8+浏览器。通过dom.attributes.nodeValue同样可以获取属性的值,兼容性未知

    2. parentNode可以获取父节点

    3. firstChild、lastChild、childNodes可以获取子节点

    4. nextSibling获取已知节点的下一个节点,previousSibling获取已知节点的上一个节点

    三、DOM对象的方法

    1. appendChild() 添加节点

    2. cloneNode() 复制节点

    3. insertBefore() 在当前节点的指定子节点之前插入

    4. removeChild() 删除节点

    5. replaceChild() 替换节点

    四、事件

    1. dom 0级事件(dom.onclick)只能绑定一次,而dom 2级事件(addEventListener)可以绑定多次

    2. 当同一类型事件绑定多次时,addEventListener按照添加顺序执行。attachEvent按添加顺序倒序执行

    3. 在addEventListner中,通过event对象拥有以下属性、方法

    • target
    • type
    • stopPropagation()
    • preventDefault()

    4. 在attachEvent中,event对象拥有以下属性、方法 

    • srcElement
    • type
    • cancelBubble(默认为false,设置为true可以取消冒泡)
    • returnValue(默认为true,设置为false可以阻止默认行为)

    夸浏览器的事件处理程序

     1 var EventUtil = {
     2 
     3     addHandler: function(element, type, handler) {
     4         if (element.addEventListener) {
     5             element.addEventListener(type, handler, false)
     6 
     7         } else if (element.attachEvent) {
     8             element.attachEvent('on' + type, handler)
     9             
    10         } else {
    11             element['on' + type] = handler
    12         }
    13     },
    14 
    15     removeHandler: function(element, type, handler) {
    16         if (element.removeEventListener) {
    17             element.removeEventListener(type, handler, false)
    18 
    19         } else if (element.detachEvent) {
    20             element.detachEvent('on' + type, hander)
    21 
    22         } else {
    23             element['on' + type] = null
    24         }
    25     }
    26 }
  • 相关阅读:
    JAVA web数据库登录界面
    JAVA web之相关名词大调查
    继承与多态课后
    第六周课后作业 02
    凯撒密文问题
    定义一个类,使用静态和构造随时知道定义了几个变量(第五周课后01)
    NAIPC2018
    [学习笔记]网络流
    Rikka with Prefix Sum
    Traffic Network in Numazu
  • 原文地址:https://www.cnblogs.com/sunken/p/4388866.html
Copyright © 2020-2023  润新知