栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

看完就能学会DOM(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

看完就能学会DOM(一)

目录
  • DOM
  • 事件
  • 标签的获取
  • 通过关系获取节点
  • 标签的属性相关操作
  • 标签类名的相关操作
  • 标签内容的获取与修改
  • 标签的创建
  • 标签的删除、复制和替换
  • 表格的全选、反选和不选

DOM

文档对象模型
  DOM 是document object model 它是W3C产业联盟制定的浏览器对程序员提供的对HTML文档操作的接口
  把文档中的代码翻译成一个对象模型
  在这个模型中 所有相关的标签属性注释文本等等12种数据 都翻译为一种类型的对象 统称节点对象
这些对象之间在文档模型数据结构中存在某种关系: 根节点 父子节点 同胞节点等等

	1.只有一个根节点document 
	2.除了根节点外所有节点都有唯一的一个父节点
	3.document是window对象的属性 
	4.全局对象模型属于BOM操作 Browser Object Model  把浏览器对外提供的接口翻译为一个对象BOM操作会在接下来的知识点讲到  它不属于标准的接口  但是浏览器厂商都提供了几乎一样的功能
	5.元素的属性也是独立节点  叫属性节点  但是不是元素节点的子节点
事件
    事件三要素:事件源  事件  事件处理函数
    事件源:
    事件:click  dblclick  mousemove...
    事件处理函数: 干什么
    事件源.on事件 = 事件处理函数

   如何获取事件源

		//鼠标点击事件
        document.querySelector(".box1").onclick = function(){
            console.log("点击了box1");
        }

		//鼠标移动事件
        document.querySelector(".box1").onmousemove = function(){
            console.log("鼠标在box1里面移动");
        }
标签的获取
		
			
box1

  1.通过类名获取:document.getElementsByClassName(“类名”)
    得到的是一个标签类数组
  2.通过id获取:document.getElementById(“id名”)
    得到的是一个标签对象
  3.通过标签名获取:document.getElementsByTagName(“标签名”)
    得到的是一个标签类数组
  4.通过属性名获取:document.getElementsByName(“name属性值”)
    得到的是一个节点类数组
  5.通过css选择器获取:document.querySelector(“css选择器”)
    得到的是一个标签对象
           document.querySelectorAll(“css选择器”)
    得到的是一个节点类数组

通过关系获取节点

  元素:页面中的标签
  节点:标签、文本、注释

  获取孩子节点

	标签对象 . childNodes 		获取子节点(标签对象的子标签、子文本、子注释)
	标签对象 . children			获取子元素(标签对象的子标签)

	标签对象 . firstChild		获取第一个子节点
	标签对象 . firstElementChild		获取第一个子元素
	标签对象 . lastChild			获取最后一个子节点
	标签对象 . lastElementChild		获取最后一个子元素

  获取父节点

	标签对象 . parentNode 			获取父节点
	标签对象 . parentElement 		获取父元素

  根据兄弟关系获取节点

	标签对象 . previousSibling			获取上一个兄弟节点
	标签对象 . previousElementSibling	获取上一个兄弟元素

	标签对象 . nextSibling				获取下一个兄弟节点
	标签对象 . nextElementSibling		获取下一个兄弟元素
标签的属性相关操作

    对标签属性直接进行操作: 标签.属性 = 属性值;
      例:box1.id = “xxxxxx”
    注意:类名不能直接操作(class属性不能直接操作)

标签类名的相关操作

  类名的添加

	标签对象 . classList.add("类名")

  判断标签是否包含某个类名

	标签对象 . classList.contains("类名"))

  类名的移除

	标签对象 . classList.remove("类名")

  判断某个标签是否拥有某个类名,有就删除,没有就添加

	标签对象 . classList.toggle("类名")

  标签类名的替换

	标签对象 . classList.replace("替换前类名","替换后类名")
标签内容的获取与修改

  获取

	标签对象 . innerHTML     获取标签内部的内容
	标签对象 . innerText		获取标签内部的内容
	标签对象 . outerHTML		获取标签内部的内容和标签本身

  修改

	标签对象 . innerHTML = ` 
标签的创建 

  方法一

	第一步
		获取标签对象
	第二步
		标签对象 . innerHTML += `<标签>`

  方法二

	第一步
		使用document.createElement("标签元素")创建一个标签对象
	第二步 使用下列API
		标签对象 . appendChild()    		只能传入标签对象,且只能传入一个参数(不常用)
		标签对象 . append( )   			可以传入标签对象,也可以传入其他数据类型,可以传入多个参数
		标签对象 . insertBefore(参数1,参数2)   	在参数2之前插入参数1
标签的删除、复制和替换

  标签的删除

	标签对象 . remove();

  标签的克隆

	标签对象 . cloneNode()		可传参true,则子标签也一起克隆

  标签的替换

	标签对象 . replaceChild(newNode,oldNode);
表格的全选、反选和不选

  示例

    
全选 昵称 加入时间 签名 操作
贤心 2016-11-29 人生就像是一场修行
许闲心 2016-11-28 于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
许闲心2 2016-11-28 于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
许闲心3 2016-11-28 于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…

  第一种

        let tInput = document.querySelectorAll("tbody input");
        // 点击全选,实现表格全选
        document.querySelector(".allSelectBtn").onclick = function(){
            tInput.forEach(item=>{
                item.checked = true;
            });
        }
        // 不选
        document.querySelector(".notSelectBtn").onclick = function(){
            tInput.forEach(item=>{
                item.checked = false;
            });
        }
        // 反选
        document.querySelector(".inverseSelectBtn").onclick = function(){
            tInput.forEach(item=>{
                item.checked = !item.checked;
            });
        } 

  第二种:封装一个函数

        let tInput = document.querySelectorAll("tbody input");
        // 全选
        document.querySelector(".allSelectBtn").onclick = fn;
        // 不选
        document.querySelector(".notSelectBtn").onclick = fn;
        // 反选
        document.querySelector(".inverseSelectBtn").onclick = fn;

        // 怎么判断点击的是那个按钮?
        function fn(){
            console.log(this);
            let checked = true;//默认全选
            if(this.classList.contains("notSelectBtn")){//不选
                checked = false;
            }
            
            let flag = 0;
            if(this.classList.contains("inverseSelectBtn")){//反选
                flag = 1;
            }
            tInput.forEach(item=>{
                // item.checked = checked;
                item.checked = flag == 1? !item.checked: checked;
            });
        }
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号