Advertisement

【JS学习笔记】JS对节点的操作(父节点,兄弟节点)

阅读量:

《HTML5权威指南》第25章‘理解DOM’基于文档的对象模型构成文档的各种组件。(1)Document对象。(2)Location对象。(3)Windows组件。(4)History记录。(5)Screen元素。(6)HTElement实例。(7)Text节点.DOM中的CSS属性和事件分为两部分处理:第一部分涉及CSS样式表声明机制;第二部分则聚焦于基于DOM的事件处理机制

Document对象

document对象中与节点操作有关的:

  • childNodes:返回子元素的合集
  • firstChild:返回某元素的第一个子元素
  • forms:返回文中所有的forms对象
  • getElementsById:
  • getElementsByClassName:
  • getElementsByName:
  • getElementsByTagName:
  • hasChildNodes():如果有子元素则返回true
  • head:返回代表head的元素
  • images:返回所有代表img的对象
  • lastChild:返回最后一个子元素
  • links:返回所有代表文档中具备href属性的a和area元素的对象(集合)
  • nextSibling:返回当前元素之后的兄弟元素(单)
  • parentNode:返回父元素
  • previousSibling:返回当前元素之前的兄弟元素(单)
  • querySelector:返回匹配特定CSS选择器的第一个元素
  • querySelectorAll:返回匹配特定CSS选择的所有元素

HTMLElement对象

  • add method: 将指定类附加到元素上
  • checking for: 检查是否存在指定类返回true
  • removal process: 移除指定类相关属性
  • toggle functionality: 实现状态反转(存在则删除)
  • data retrieval: 返回所有data-开头的属性
  • appending child element: 将目标HTML元素附加为当前元素子项
  • inserting before: 插入到指定位置前的操作

实战

百度前端 2019年4月2日笔试题第二题:

以下是代码:

复制代码
    function output(str) {
        var jsBlink = document.getElementById("jsBlink");
        var pre = jsBlink.previousElementSibling; //获取节点之前的兄弟元素,推荐使用循环
        while (pre) {
            var parent = pre.parentNode;
            parent.removeChild(pre);
            pre = jsBlink.previousElementSibling;
        }
        //删除所有jsBlink之前的元素
        let i = 0;
        let len = str.length;
        Interval(print, 200); //利用setTimeout实现setInterval
        function Interval(func,wait) {
            var interval = function () {
                func.call(null);
                setTimeout(interval,wait);
            };
            setTimeout(interval,wait);
        }
        function print() {
            if (i < len){
                var idColor = Math.round(Math.random()*23);
                var sp = document.createElement("span");
                sp.innerHTML = str.charAt(i);
                sp.className = "wordcolor"+ idColor;
                document.body.insertBefore(sp,jsBlink);
                i++;
            }
        }
    
    }
    output("Js is so cool!")

全部评论 (0)

还没有任何评论哟~