JS------DOM

DOM

1.回顾

1.1 字符串方法

  • charAt()
  • charCodeAt()
  • indexOf()
  • lastIndexOf()
  • 截取
    • substring()
    • slice()
    • substr()
  • split()
  • replace()
  • toUpperCase(),toLowerCase()
  • trim()

1.2 数组

  • 数组栈方法

    • push,pop
    • unshift,shift
  • splice(start,deleteCount,items)

  • indexOf()

  • sort()

  • reverse()

  • concat()

  • slice()

  • join(组合标志):将数组按特定符号组合成字符串

    var arr = ["2020","12","24"];
    console.log(arr.join()); //2020,12,24
    console.log(arr.join("")); //20201224
    console.log(arr.join("-")); //2020-12-24
    
    //ui转换为web
    var str = "javauijavauijavauijava";
    str=str.split("ui").join("web");
    console.log(str);
    

2.数组迭代方法

  • every:针对数组做些判断,如果结果都为ture,最后才为true

    //1.every:针对数组做些判断,如果结果都为ture,最后才为true
    var arr = [89,98,96,100,88];
    //如果所有的成绩都在80以上,拉出去打一顿
    var n = 0;
    var isD = arr.every(function(value,index,array){
        //value:数组项,index下标 array:当前操作的数组 
        return value>80;
    });
    console.log(isD); //false
    
  • some():针对数组做些判断,只要有一个为ture,最后就为true

    //2.some:针对数组做些判断,只要有一个为ture,最后就为true
    var arr = [59,68,36,100,18];
    //只要有一门成绩100+,拉出去打一顿,偏科
    var is =  arr.some(function(value){
        return value >= 100;
    });
    if(is ==true){
        console.log("拉出去打一顿,偏科");
    }
    
  • filter:针对数组做些判断,满足条件的会组成一个新的数组返回

    //3.filter:针对数组做些判断,满足条件的会组成一个新的数组返回
    var arr = [
        {"name":"手机","type":"华为meta40","price":8999},
        {"name":"电脑","type":"mac","price":13999},
        {"name":"电脑","type":"外星人","price":139999},
        {"name":"手机","type":"诺基亚","price":99},
        {"name":"电视","type":"小米","price":999}
    ];
    var newArr = arr.filter(function(value){
        return value.name == "电视";
    });
    console.log(newArr);
    
  • map():返回的值会组成一个新的数组

    //4.map:返回的值会组成一个新的数组
    var arr = [56,78,54,98,12];
    var arr = arr.map(function(value,index){
        console.log(index+"-------"+value);
        return value+5;
    });
    console.log(arr); // [61, 83, 59, 103, 17]   
    
  • forEach():循环数组

    //5.forEach
    arr.forEach(function(value,index){
        console.log(index+"--------"+value);
    })
    

3.DOM

DOM:Document Object Model 文档对象模型

节点:node

DOM主要是针对标签的一些操作:获取,添加,修改,删除,替换

3.1 获取

3.1.1 DOM获取元素
  • 通过id名:document.getElementById(“id名”):具体的实际的标签,获取的时候有就是有,没有就是没有

  • 通过TagName:

    • document.getElementsByTagName(“标签名”):整个文档中,获取的是元素集合,使用一定要加下标,动态获取,可以获取到后期添加的标签
    • 父元素.getElementsByTagName(“标签名”):父元素中的,获取的是元素集合,使用一定要加下标,动态获取,可以获取到后期添加的标签
  • 通过ClassName:

    • document.getElementsByClassName(“类名”):整个文档中,获取的是元素集合,使用一定要加下标,动态获取,可以获取到后期添加的标签
    • 父元素.getElementsByClassName(“类名”):父元素中的,获取的是元素集合,使用一定要加下标,动态获取,可以获取到后期添加的标签
  • 通过选择器获取(ie8+)

    • document.querySelector(“css选择器”)

    • document.querySelectorAll(“css选择器”)

      //1.通过选择器获取:静态获取,获取的时候有多少就是多少,后期添加都获取不到
      //document.querySelector("选择器"):获取选择器选中标签中的第一个元素
      var oUl = document.querySelector(".list");
      console.log(oUls);
      
      //document.querySelectorAll("选择器"):获取选择器选中的所有标签  节点列表
      var oUls = document.querySelectorAll(".list");
      console.log(oUls);
      console.log(oUls.length);
      
      var oLis = document.querySelectorAll("#list1 li");
      console.log(oLis);
      
      oUl.innerHTML += "<li>吃饭</li>";
      
3.1.2 获取子节点
  • 非标准属性:父节点.children(一般用这个)

    //2.获取子节点
    //非标准属性:父节点.children(一般用这个)
    var childs = oUl.children;
    console.log(childs);//HTMLCollection(4)
    
  • 标准属性:父节点.childNodes

    //标准属性:父节点.childNodes
    var childs = oUl.childNodes;
    console.log(childs); //NodeList(9) 
    

    注意:节点并不是单指标签

    节点包括:标签节点,文本节点(空格,回车,文字),属性节点–2,注释节点 。。。。。

  • 基本属性

    • nodeType:获取节点类型

    • nodeName:获取节点名称

    • nodeValue:操作文本节点内容

      //4.节点属性  nodeType,nodeName,nodeValue
      console.log(childs[0].nodeType); //文本--3
      console.log(childs[1].nodeType); //标签--1
      console.log(childs[3].nodeType); //注释--8
                                       //属性--2
      
      console.log(childs[0].nodeName); //文本--#text
      console.log(childs[1].nodeName); //标签--Li
      console.log(childs[3].nodeName); //注释--#comment
      
      //nodeValue是操作文本节点
      childs[0].nodeValue = "吃饭吗?";
      
3.1.3 获取父元素
  • 获取直接父元素:子元素.parentNode

    //2.获取父节点(直接父元素)  子节点.parentNode
    var p = oSpan.parentNode;
    console.log(p);
    
  • 获取定位父元素:子元素.offsetParent,如果没有定位父元素获取到body

     //3.获取定位父节点  子节点.offsetParent,没有定位父元素获取到body
    var oO = oSpan.offsetParent; //
    console.log(oO);
    
3.1.4 获取兄弟节点
  • 首节点:父节点.firstElementChild || 父节点.firstChild
  • 尾节点:父节点.lastElementChild || 父节点.lastChild
  • 上一个兄弟:参考节点.previousElementSibling ||参考节点.previousSibling
  • 下一个兄弟:参考节点.nextElementSibling ||参考节点.nextSibling

3.2 添加节点

3.2.1 创建节点
  • 创建标签节点:document.createElement(“标签名”);

  • 创建文本节点:document.createTextNode(“文本内容”)

    //2.创建节点: document.createElement("标签名")
    var cLi = document.createElement("li");
    //cLi.innerHTML = "完成一个项目";
    
    //3.创建文本节点:document.createTextNode("文本内容")
    var text = document.createTextNode("完成两个项目");
    //把文本添加到标签中
    cLi.appendChild(text);
    
3.2.2 添加节点
  • 追加 在父元素的末尾添加 父节点.appendChild(子节点)

    //2.创建节点: document.createElement("标签名")
    var cLi = document.createElement("li");
    cLi.innerHTML = "完成一个项目";
    //1.追加:在父元素的末尾添加  父节点.appendChild(子节点)
    oUl.appendChild(cLi);
    
  • 在某个元素之前添加: 父节点.insertBefore(newChild,refChild)

    //4.在某个元素之前添加: 父节点.insertBefore(newChild,refChild)
    var iLi = document.createElement("li");
    iLi.innerHTML = "不吃饭";
    oUl.insertBefore(iLi,oLi[2]);
    

注意:添加一个已经存在的标签,发生物理位移

3.3删除节点

  • 删除自身:标签.remove() ie不兼容

  • 删除子节点:标签.removeChild(子节点)

     var oUl = document.getElementsByTagName("ul")[0];
    //1.删除标签本身  标签.remove(); 不建议使用,ie不兼容
    //oUl.remove(); 
    
    //2.删除子元素: 父元素.removeChild(子节点)
    oUl.removeChild(oUl.children[2]);
    

3.4 复制与替换

  • 替换:父节点.replaceNode(newChild,refChild)

    //替换:父节点.replaceChild(newChild,refChild)
    var cDiv = document.createElement("div");
    cDiv.innerHTML = "我是一个小可爱";
    document.body.replaceChild(cDiv,oDiv)
    
  • 复制:被复制的节点.cloneNode(true)

    //复制节点:被复制的节点.cloneNode(boolean)
    //boolean 默认是false:只复制标签没有内容      true:复制标签和内容
    var cloneD = oDiv.cloneNode(true);
    document.body.appendChild(cloneD);
    

3.5 操作属性节点

  • 操作属性

    • 获取:var 变量 = 标签.属性名
    • 设置:标签.属性名 = 属性值
  • DOM操作属性节点

    • 获取:标签.getAttribute(“属性名”)
    • 设置:标签.setAttribute(“属性名”,“属性值”)
    • 删除:标签.removeAttribute(“属性名”)
    //1.获取id
    console.log(oDiv.getAttribute("id"));;
    console.log(oDiv.getAttribute("class"));
    
    //2.设置
    oDiv.setAttribute("class","active");
    
    //3.删除
    oDiv.removeAttribute("id");
    
    //区别:可以获取直接写在行内的自定义属性,删除某个指定的属性
    console.log(oDiv.index); //undefined  获取不到直接写在标签上自定义属性
    console.log(oDiv.getAttribute("index")); //0
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值