js-dom,event

137 阅读3分钟

DOM 节点和元素的区别

  • 获取元素

    • id获取: getElementById
    • class获取 :getElementsByClassName
    • tag获取 :getElementsByTagName
    • css选择器来获取: querySeletor
    • 获取多个元素: querySeletorAll
    • 通过名字 : getElementByName

元素和节点的各种关系 (node节点 element 元素)

  • 子关系

    • 子元素 : children
    • 子节点: childNodes
    • 第一个子元素 :firstEelementChild
    • 第一个子节点: firstChild
    • 最后一个子元素: lastEelementChild
    • 最后一个子节点:lastChild
  • 父关系

    • 父节点:parentNode
    • 父元素:parentElement
  • 兄弟关系

    • 上一个子元素 : previousElementSibiling
    • 上一个子节点: previouseSibiling
    • 下一个子元素: nextElementSibiling
    • 下一个子节点:nextSibiling
  • 元素的增删改查

    • 创建一个元素 createElement("标签名");

    • 添加一个父容器里面 父元素.appendChild(子元素)

      • 只会添加到父容器的最后
    • 添加到某一个元素之前 父元素.insertBefore("添加的元素","添加到哪个之前");

    • 删除元素

      • removeChild: 父元素.removeChild("要删除的元素");
      • remove(): 要删除的元素.remove();
    • 修改

      • 替换: 父元素.replaceChild(“替换的新元素”,“替换的旧元素”);
  • 获取非行间样式

    • Chrome: 样式值 = getComputyStyle("元素","伪类")[‘样式名’]
    • IE : currentStyle: 元素.currentStyle.样式名
  • 元素大小

    • 获取宽高 (width、height)
      • 1.offset(自身的宽或者高+padding+border):没有单位 1.获取元素 2.获取大小
      • 语法:获取的元素.offsetWidth 获取的元素.offsetHeight
      • 2.client : 自身宽高 + padding 没有border没有外边
      • 语法:获取的元素.clientWidth 获取的元素.clientHeight
  • 获取偏移量offset (top、left)

    • 如果没有定位 会相对于页面来算偏移 语法:获取的元素.offsetLeft 获取的元素.offsetTop
    • 如果有定位,会相对于父级来计算偏移量 语法:获取的元素.clientLeft 获取的元素.clientTop
  • 节点类型 nodeType,获取子节点语法:父节点.childEles[子元素索引]

    • 获取节点里的第一个元素 : 所有元素节点的类型都是1
    • 文本节点: 所有的文本节点类型是3
    • 注释节点:所有注释节点的类型是8
    • 属性节点 : 元素.attributes 可以获取属性节点的数组
  • 所有的节点 都会有 nodeName : 节点名; nodeValue :节点的值

    • 元素节点 :nodeName 就是标签名(是大写),nodeValue:是null
    • 文本节点 : nodeName :“#text”所有的文本节点 ; nodeValue 是具体的内容
    • 注释节点: nodeName :#comment ;nodeValue:注释的内容
    • 属性节点 : nodeName: 属性名 nodeValue:属性值
  • 事件对象

    • 几个坐标
      • 点击位置离浏览器的左边距和上边距 : clientX / clientY;这个x、y是相对于浏览器窗口
      • 触发事件的距离页面的左边距和上边距: pageX、 pageY;这个是相对于页面的x和y
      • 相对于自身的左边距 和上边距 : offsetX 、offsetY
  • 鼠标事件

        1.click :点击鼠标左键
        document.onclick = function(){
            console.log("点击了鼠标")
        }
        2.dblclick: 双击鼠标
        document.ondblclick = function(){
            console.log("双击了");
        }
        3.右键点击
        document.oncontextmenu = function(){
            console.log("鼠标右键点击");
        }
        4.滚轮wheel
        document.onwheel = function(){
            console.log("触发滚轮事件");
        }

        5.mousemove : 鼠标在元素上移动的时候触发 (不停的触发)
        document.onmousemove = function(){
            console.log("移动的时候触发");
        }
        6.mousedown:鼠标按下的时候触发 (按鼠标的左键)
        document.onmousedown = function(){
            console.log("鼠标按下的时候触发");
        }
        7.mouseup:鼠标抬起的时候
        document.onmouseup = function(){
            console.log("鼠标抬起的时候触发");
        }
        8.mouseover :鼠标覆盖到一个元素的触发 
        document.onmouseover = function(){
            console.log("鼠标移上去了");
        }
        9.mouseout :鼠标移除一个元素的时候触发 
        document.onmouseout = function(){
            console.log("鼠标移除");
        }

        10、mouseenter:鼠标进入一个元素的时候触发
        document.onmouseenter = function(){
            console.log("鼠标进入了document");
        }
        11.mouseleave : 鼠标离开一个元素的时候触发
        document.onmouseleave = function(){
            console.log("鼠标离开了");
        }
  • 键盘事件:1.键盘按下keydown 2. 键盘抬起 keyup 3.键盘按下抬起 keypress
        1. 如何区分具体的按钮,通过事件对象来区分 区分每一个按键 通过keycode ;
            document.onkeyup = function(e){
            var event = e || window.event;
            console.log( event.keyCode);  // ascii
            var keyCode = event.keyCode || event.which;  // chrome :event.keyCode  火狐:event.which
            if(keyCode==65){
                console.log("点击了a按键");
            }
        }

        2.组合按钮 : 事件对象里提供组合按钮的属性 
        altKey: 按下了alt 按键 ,按下了alt就是true 否则就是false
        ctrlKey  :被按下就是true 否则就是false
        shiftKey
        document.onkeydown =  function(e){
            console.log("alt",e.altKey)
            console.log("ctrl",e.ctrlKey);
            console.log(e.ctrlKey)
            console.log('shift',e.shiftKey)
            var event = e || window.event;
            var keyCode = e.keyCode || e.which;
            if(e.altKey && keyCode==65){
                console.log("同时按了alt 和A键");
            }
        }