• JavaScript的BOM、DOM操作、节点以及表格(二)


    BOM操作

    一、什么是BOM

    BOM(Browser Object Model)即浏览器对象模型。
         BOM提供了独立于内容 而与浏览器窗口进行交互的对象;
         BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性;

    二、BOM常用的对象

    Screen对象:尺寸
        window.screen;
        screen.width
        screen.height
        screen.availHeight//可用高度 = 可用高度-底部任务栏高度
        screen.availWidth//可用宽度

    Location对象:地址
        console.log(location)
        location.href//完整的URL地址
        location.protocol//协议名
        location.hostname//主机名
        location.port//端口名
        location.host//主机名+端口名
        location.pathname//文件路径
        location.search//从?开始的部分
        location.hash//从#开始的部分

    History对象:历史
        history.length;//用于记录当前页面跳转的历史记录的个数
        history.forward();//点击去前一页,相当于浏览器的前进按钮
        history.back();//点击去后一页,相当于浏览器的后退按钮
        history.go():表示跳转到浏览器的任意界面
        history.go(-1);//后一页,相当于history.forward()
        history.go(0);//当前页,表示刷新当前页面
        history.go(1);//前一页,相当于history.back()

    Navigator对象:(了解)返回关于浏览器的各种系统信息。

    Windows常用的方法

     Window对象的常用方法:

        1.window.alert():弹窗输出
      2.window.prompt():弹窗输入
      3.window.confirm():带确认、取消的提示框。分别返回true,false。
      4.window.close():关闭浏览器窗口。
      5.window.open():打开一个新窗口,参数1:地址;参数2:新窗口的名字;参数3:新窗口的各种配置属性;
      6.window.setTimeout():延时器,表示延时多少ms后执行一个函数。参数1:函数名或者匿名函数;参数2:毫米;参数3:传给页面的参数
      7.window.setInterval():定时器,每隔多少毫秒执行一遍函数,其他用于与setTimeout完全相同。
      8.clearInterval()、clearImmediate():分别清楚定时器、延时器。声明定时器可以接受一个ID,传给clearInterval().

    DOM操作

    1.DOM节点数  

      1.DOM节点分为三类:元素节点(标签节点),属性节点,文本节点。
        属性节点和文本节点都属于元素节点的子节点,因此操作时,需要先选中元素节点,再修改属性和文本。

    2.查看元素节点

        1、使用getElement系列方法。

                window.onload = function(){
                    var lis  = document.getElementById("first");
                    
                    var lis1 = document.getElementsByClassName("cls");
                    
                    var lis2 = document.getElementsByName("na");
                    
                    var lis3 = document.getElementsByTagName("li");}

      2、注意事项:

          (1)ID不能重名,如果ID重复,只能取到第一个。
          (2)获取元素节点时,必须等到DOM树加载完成后才能获取。

              两种方式:①将JS写在文档之后。②如图,写在window.onload中。
          (3)通过getElements系列取到的为数组格式,操作时必须取到其中的每一个元素,才能进行操作,而不能直接对数组进行操作。
          (4)这一系列方法,也可以先选中DOM节点,从选择的DOM节点中在选择需要的节点。

      3、通过querySelector()系列方法

        (1)传入一个选择器名称,返回找到的第一个元素,通常用于查找ID
        (2)传入一个选择器名称,找到所有元素,无论找到几个,都返回一个数组格式的元素。

    document.querySelector("#first");
    document.querySelectorAll("#div li");

    3.设置属性节点

      1.查看属性节点:getAttribute("属性名")
      2.设置属性节点:setAttribute("属性名","属性值")
      3.删除属性节点:removeAttribute("属性名");
      4.注意事项:setAttribute()在老版本的IE中会出现兼容性问题,可以使用点符号(.)代替,设置属性。

    【JS修改CSS的多种方式】

      (1)使用setAttribute()设置class和style
      (2)使用 .className 添加一个class选择器,修改style
      (3)使用.style.样式  直接修改单个样式,注意样式名必须使用驼峰命名法。
      (4)使用.style.  或 .style.cssText  直接修改样式。

                 document.getElementById("first").setAttribute("class","class1");
                 document.getElementById("first").setAttribute("style","color:red;");
                 document.getElementById("first").getAttribute("style");//查看CSS
                 document.getElementById("first").style.fontSize = "20px";
                 document.getElementById("first").removeAttribute("style");//移除CSS
                 
                 document.getElementById("first").style = "font-size: 20px";//IE不兼容
                 document.getElementById("first").style.cssText = "font-size: 20px";

    4.查看设置文本节点

      (1)innerHTML : 取到或者设置一个节点中的HTML代码。
      (2)innerText: 取到或者设置一个节点中的文本,不能设置HTML代码。

                var s1 = document.getElementById("first").innerHTML;
                document.getElementById("first").innerHTML = "<a>yiyiyi</a>";
    
    
                var s2 = document.getElementById("first").innerText;
                document.getElementById("first").innerText = "teset";

     JS中的层次节点

    1.基本节点

      1.childNodes:获取当前节点的所有子节点(元素节点和文本节点)

      2.children:获取当前节点的所有元素子节点(不包含文本节点)

      3.parentNode:获取当前元素的父节点。

      4.firstChild:获取第一个子节点,包括回车符等字符节点

      5.lastChild:获取最后一个子节点

      6.firstElementChild:获取第一个元素节点,不含回车符等字符节点。

      7.lastElementChild:获取最后一个元素节点,不含回车符等字符节点。

      8.previousSibling:获取当前节点的前一个兄弟节点,包括文本节点

      9.previousElementSibling:获取当前节点的前一个元素兄弟节点,不包括文本节点。

      10.nextSibling:取当前节点的后一个兄弟节点,包括文本节点

      11.nextElementSibling:获取当前节点的后一个元素兄弟节点,不包括文本节点。

      12.attributes:获取当前节点的属性节点,返回数组模式。

    2.创建添加节点

      1.document.createElement("标签名"):创建一个新节点。
         需要配合setAttribute()为新节点设置属性。

                    var img = document.createElement("img");
                    img.setAttribute("src","../../01-HTML基本标签/img/Female.gif_temp.bmp");

    2. ①父节点.insertBefore(新节点,目标节点):在父节点中,将新节点插入到目标节点之前。

      ②父节点.appendChild(新节点):在父节点的最后插入新节点。

      ③原节点.cloneNode(true):克隆一个节点。

        传入true表示克隆原节点及原节点的所有子节点

        传入false表示只克隆原节点,不可隆其它子节点。

                window.onload = function(){
                    var ul = document.getElementById("ul1");
                    //插入目标之前
                    document.getElementsByTagName("div")[0].insertBefore(img,ul);
                    
                    //插入到最后
                    document.getElementsByTagName("div")[0].appendChild(img);
                    //克隆
                    var newUL = ul.cloneNode(true);
                    document.getElementsByTagName("div")[0].appendChild(newUL);
                }

    3.删除替换节点

      ①父节点.removeChiled(子节点):从父节点中,删除指定子节点。

      ②父节点.replaceChild(新节点,老节点):从父节点中,用新节点替换老节点。

                    document.getElementsByTagName("div")[0].removeChild(newUL);
                    document.getElementsByTagName("div")[0].replaceChild(img,ul);

     JS对表格的操作:

    HTML表格中的对象有三种:

      1.表格对象:var table = document.getElementById("table");
      2.行对象:table.rows[0]
      3.单元格对象:table.rows[0].cells[0]

    表格对象中的属性和方法

      1.rows属性:返回当前表格的所有行,为数组格式。

      2.insertRow(index):在表格的index行插入一个新行,返回新产生的对象。

      3.deleteRow(index):删除表格的第index行。

    行对象的属性和方法

      1.cells属性:返回当前行中的所有单元格对象,为数组格式。

      2.rowIndex属性:返回当前行在表格中的下标。

      3.insertCell(index)属性:表示在行中的index位置,插入一个新单元格,返回新产生的单元格对象。

      4.deleteCell(index)属性:表示删除本行中的第index个单元格。

    单元格对象的属性和方法

      1.cellIndex属性:返回当前单元格在本行中的下标

      2.innerHTML/innerText/className/style.color等都可以使用。

  • 相关阅读:
    codeforces #313(div 2)
    云计算设计模式(二十四)——仆人键模式
    封装一个ViewPager真正的实现图片无限循环滚动带导航点
    HDU4622:Reincarnation(后缀数组,求区间内不同子串的个数)
    数据库分页
    [Swift]LeetCode728. 自除数 | Self Dividing Numbers
    [Swift]LeetCode726. 原子的数量 | Number of Atoms
    [Swift]LeetCode725. 分隔链表 | Split Linked List in Parts
    [Swift]LeetCode724. 寻找数组的中心索引 | Find Pivot Index
    [Swift]LeetCode722. 删除注释 | Remove Comments
  • 原文地址:https://www.cnblogs.com/JiangLai/p/8969401.html
Copyright © 2020-2023  润新知