JavaScript 入门指南(三)BOM 对象和 DOM 对象

BOM 对象

BOM 简介

  • BOM(browser Object Model)即浏览器对象模型
  • BOM 由一系列对象组成,是访问、控制、修改浏览器的属性的方法
  • BOM 没有统一的标准(每种客户端都可以自定标准)。
  • BOM 的顶层是 window 对象

window 对象

window 对象表示浏览器中打开的窗口。

使用 window 对象中的属性和方法,可以省略对象名,直接写方法名和对象名

  • 属性

    • location :当前 URL 的信息
    • history :客户访问过的 URL 的信息
    • screen :客户端的屏幕信息
    • navigator :浏览器基本信息
    • document :文档对象
  • 函数

    弹框

    // 提示框(显示带有一段消息和一个确认按钮的警告框)
    alert(提示信息);
    // 确认框(显示带有一段消息以及确认按钮和取消按钮的对话框)。点击确定,返回true;点击取消,返回false
    confirm(提示信息);
    // 输入框(显示可提示用户输入的对话框)。点击确定,返回输入的内容;点击取消,返回null
    prompt(提示信息);
    

    浏览器窗口

    // 打开一个新的浏览器窗口或查找一个已命名的窗口
    open(网址)
    // 关闭浏览器窗口
    close()
    

    定时器

    // 执行一次的定时器
    setTimeout(函数, 毫秒值); 
    // 反复执行的定时器
    setInterval(函数, 毫秒值); 
    // 参数:
    //    函数:定义一个有名函数,传递函数名字,或者使用匿名函数
    //    毫秒值:设置定时器的时间,在指定的时间结束之后,会执行传递的函数
    //    返回值:返回的是定时器的 id 值,可以用于取消定时器使用
    
    // 取消执行一次的定时器
    clearTimeout(定时器的id值);
    // 取消反复执行的定时器
    clearInterval(定时器的id值);
    

    示例:

    var timeId = setTimeout(function () {
        alert("c4爆炸了!");
    }, 5000);
    //alert(timeId);	// 2
    
    function butOnclick() {
        // 取消执行一次的定时器
        cl
    }
    

location 对象

Location 对象包含有关当前 URL(浏览器的地址)的信息。

  • 属性:

    • href :获取当前浏览器的url地址

      href = “新的url地址” : 跳转页面,相当于在浏览器地址栏中输入了地址,并且敲击回车(打开页面)

    • hostname :主机名

    • port :端口名
    • host :主机名+端口名
  • 方法

    • reload() :重新加载当前文档。 刷新页面

web 存储

  • HTML5 为 JS 增加了两个可以存储数据的对象

    • localStorage :本地存储,永久存储数据,作用域:所有页面永久访问
    • sessionStorage :会话存储,临时存储数据,作用域:一次会话(连续跳转的几个页面)
  • 不管是 localStorage,还是 sessionStorage,可使用的 API 都相同

    常用函数(以 localStorage 为例):

    • setItem(key, value) :存储一个数据
    • getItem(key) :获取一个数据
    • removeItem(key) :删除一个数据
    • clear() :清除所有数据

history 对象

History 对象包含用户(在浏览器窗口中)访问过的 URL。

History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。

函数

  • back() :后退到前一个页面(加载 history 列表中的前一个 URL)
  • forward() :前进到后一个页面(加载 history 列表中的下一个 URL)
  • go(n) :直接前进到第 n 个页面
  • go(-n) :直接后退到第 n 个页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>history对象</title>
    <script>
        //创建鼠标点击事件的响应函数
        function goBack() {
            window.history.back();
        }
        function goForward() {
            window.history.forward();
        }
    </script>
</head>
<body>
    <input type="button" value="上一步" onclick="goBack()"/>
    <input type="button" value="下一步" onclick="goForward()"/>
    <a href="04_history对象.html">跳转到04_history对象.html</a>
</body>
</html>

screen 对象

Screen 对象包含有关客户端显示屏幕的信息。

screen 对象中的属性,可以通过 screen.属性名 直接使用

属性

  • height :返回显示屏幕的高度(像素)
  • width :返回显示器屏幕的宽度(像素)

navigator 对象

navigator 对象包含有关浏览器的信息。

navigator 对象中的属性,可以通过 navigator.属性名 直接使用

属性

  • appName :返回浏览器的名称
  • appVersion :返回浏览器的平台和版本信息
  • userAgent :浏览器类型

超链接与表单的跳转控制

  • 超链接和表单都可以进行跳转。跳转属于它们的默认功能。

  • 一般在它们触发的一个事件中,可以通过返回 false,来阻止他们的跳转!

    <br />function fun5(){
        alert('超链接被点击了!');
        return false;
    }
    
    function f() {
        alert("阻止表单提交");
        return false;
    }
    
    <a href="https://www.baidu.com" onclick="return fun5()">超链接</a>
    //阻止提交
    <a href="javascript:void(0)">我是超链接</a>
    
    <form action="http://www.baidu.com" onsubmit="return f()">
        <input type="submit">
    </form>
    

DOM 对象

DOM 是 document object model,也就是文档对象模型。

可以将 HTML 页面看做一个文档,在 js 眼中就是一个 document 对象。

这个 document 对象中就包含了页面中的所有元素。

DOM 中的节点分类:

  • 元素节点(element node)
  • 属性节点(attribute node)
  • 文本节点(text node)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


dom 获取元素

  • 方式1:es6 提供了强大的根据 CSS 选择器获取元素的接口(推荐)

    // 根据css选择器获取一个元素
    document.querySelector(CSS选择器)
    // 根据css选择器获取元素对象数组集合
    document.querySelectorAll(CSS选择器)
    
  • 方式2:es5 提供的获取元素的接口

    // 根据 id 获取一个元素:
    document.getElementById(ID)  	// 等价于es6的 querySelector(#ID)
    // 根据 class 获取多个元素:
    document.getElementsByClassName(class)	   // 等价于es6的 querySelectorAll(.class)
    // 根据标签名称获取多个元素:
    document.getElementsByTagName(标签名称)		// 等价于es6的 querySelectorAll(标签)
    // 根据 name 属性获取多个元素:
    document.getElementsByName('name值') 	  // 等价于es6的 querySelectorAll(元素名称[name=name值])
    
  • 小总结:

    • es6 接口获取元素功能非常强大,而且接口非常易用
    • es5 接口功能非常局限,而且接口使用复杂

间接根据层次关系获取节点:

  • 父节点:parentNode:表示该元素的父节点
  • 孩子节点:
    • childNodes:表示该元素的所有子节点的集合,数组对象
    • firstElementChild:第一个儿子节点
    • lastElementChild:最后一个儿子节点
  • 兄弟节点:
    • nextElementSibling:该元素后一个兄弟元素节点
    • previousElementSibling:该元素前一个兄弟元素节点

dom 操作内容

  • 常用函数

    // 向body中追加html内容
    document.write(html内容) 
    // 获取或者修改元素的纯文本内容(从元素内部起始位置到终止位置的文本内容, 不包含内部的Html标签)
    element对象.innerText; 
    // 获取或者修改元素的html内容(从元素内部的起始位置到终止位置的全部内容, 包括其内部的Html标签)
    element对象.innerHTML; 
    // 获取或者修改包含自身的html内容
    element对象.outerHTML; 
    
  • 示例

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>dom操作内容</title>
    </head>
    <body>
    <div id="d1">我是d1<br/></div>
    <div id="d2">我是d2</div>
    <div id="d3">我是d3</div>
    <script>
        // 向body中追加html内容
        document.write("<h1>我是h1标题标签</h1>");
    
        // 获取元素的纯文本,html内容对比
        var d1Ele = document.querySelector("#d1");	// 获取id是d1的元素 <div id="d1">我是d1<br/></div>
        console.log(d1Ele.innerText);	//我是d1  ==>标签中的文本
        console.log(d1Ele.innerHTML);	//我是d1<br>  ==>标签体
        console.log(d1Ele.outerHTML);	//<div id="d1">我是d1<br></div>  ==>整个标签
    
        // 修改元素的纯文本,html内容对比
        var d2Ele = document.querySelector("#d2");		 //获取id是d2的元素 <div id="d2">我是d2</div>
        //d2Ele.innerText = "<h2>我是h2标签体标签</h2>";	//显示纯文本
        d2Ele.innerHTML = "<h2>我是h2标签体标签</h2>";		//显示标签
    
        // 获取或修改包含元素自身的html内容(了解)
        var d3Ele = document.querySelector("#d3");		//获取id是d3的元素 <div id="d3">我是d3</div>
        console.log(d3Ele.outerHTML);					//<div id="d3">我是d3</div>
        d3Ele.outerHTML = "<h3>我是h3标签体标签</h3>";		//把d3的div整个替换为了h3标签
    </script>
    </body>
    </html>
    

dom 操作属性

  • 方法1:

    // 获取元素的一个属性的值。注意:只能获取标签上属性的值,获取不用用户输入的内容
    element对象.getAttribute(属性名)
    // 给元素设置一个属性,可以设置原生和自定义
    element对象.setAttribute(属性名, 属性值)
    // 移除元素的一个属性
    element对象.removeAttribute(属性名) 
    
  • 方法2:

    // 获取或修改一个属性的值
    element对象.属性名
    
  • 注:

    • 方法1 可以对自定义属性进行操作;但是 方法2 只能对标准属性进行操作。
    • 文本输入框标签:通过对象名.value 属性,可以获取到页面中用户输入的内容。
    • 复选框|单选框标签:
      • 通过 对象名.checked 属性可以获取到选中状态。选中:true;未选中:false
      • 通过 对象名.getAttribute() 函数获取属性值:有 checked 属性,值就是 checked;没有 checked 属性,值就是 null

dom 操作元素

  • 常用方法

    // 获取或者设置标签的html内容
    element对象.innerHTML
    // 移除元素
    element对象.outerHTML=""
    
    // 创造一个节点,返回一个element对象
    document.createElement("标签名称)
    // 给父标签添加一个子标签
    parentElement对象.appendChild(newNode) 
    // 在指定节点前插入新节点
    parentElement对象.insertBefore(newNode,beforeNode)
    // 替换节点的方法 
    parentElement对象.replaceChild(newNode, oldNode)
    // 删除节点的方法
    parentElement对象.removeChild(childNode)
    
  • 示例:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>dom操作元素</title>
    </head>
    <body>
    <div id="container">
        <input id="smoke" type="checkbox" name="hobby" value="抽烟">
        <label for="smoke">抽烟&emsp;</label>
    <!--    <input id="drink" type="checkbox" name="hobby" value="喝酒">-->
    <!--    <label for="drink">喝酒&emsp;</label>-->
    <!--    <input id="perm" type="checkbox" name="hobby" value="烫头">-->
    <!--    <label for="perm">烫头&emsp;</label>-->
    </div>
    <script >
        //获取div标签对象
        var divEle = document.querySelector("#container");
    
        // 添加喝酒 innerHTML
        console.log(divEle.innerHTML);
        divEle.innerHTML += "<input id='drink' type='checkbox' name='hobby' value='喝酒'>"
            + "<label for='drink'>喝酒&emsp;</label>";
        
        // 添加烫头
        // 创建input标签,使用document对象中方法createElement("标签名称")
        var inputEle = document.createElement("input");
        console.log(inputEle);			//<input>
        // <input id="perm" type="checkbox" name="hobby" value="烫头">
        inputEle.setAttribute("id","perm");
        console.log(inputEle);			//<input id="perm">
        inputEle.setAttribute("type","checkbox");
        inputEle.setAttribute("name","hobby");
        inputEle.setAttribute("value","烫头");
        console.log(inputEle);			//<input type="checkbox" id="perm" name="hobby" value="烫头">
    
        // <label for="perm">烫头&emsp;</label>
        // 创建标签
        var lableEle = document.createElement("lable");
        // 添加属性
        lableEle.setAttribute("for","perm");
        console.log(lableEle);			//<lable for="perm">
        // 添加标签体
        lableEle.innerHTML="烫头&emsp;";
        console.log(lableEle);			//<label for="perm">烫头&emsp;</label>
    
        // 使用父标签div中的方法appendChild(子标签);添加子标签
        divEle.appendChild(inputEle);
        divEle.appendChild(lableEle);
    
        // 移除元素(了解) outerHTML
        //lableEle.outerHTML = "";			//删除label标签
    </script>
    </body>
    </html>
    

dom 操作样式

  • 通过 style 对象

    // 获取或者修改一个样式
    element对象.style.css样式
    // 设置多个css样式
    element对象.style.cssText = "样式键值对;样式键值对..."
    

    注意:

    • style 对象,只能获取行内样式(写在一行中),不能获取内嵌的样式(写在 head 的 style 中)和外链的样式(写在css文件中)

    • style 是对象。typeof 的结果是 Object

    • 值是字符串,没有设置值是空字符串""

    • 命名规则:驼峰命名

    • DOM 中的 style 对象并不等同 html 标签中 style 属性,在 JS 中,横杠 - 是不能作为标识符的

      比如:背景色样式在 DOM 中是 backgroundColor,而在 CSS 中是 background-color

    style 对象的常用属性:backgroundColor(背景色)、backgroundImage(背景图片)、color(颜色)、width(宽像素)、height(高像素)、border(边框)、opacity(设置透明度,IE8 以前是 filter: alpha(opacity=xx))

  • 通过 className 属性

    节点的 className 属性对应于 css 中的类选择器

    // 获取或者修改class属性值(样式)
    element对象.className 
    // 获取class属性值集合,返回一个classList对象(es6特别提供的操作元素class的接口)
    element对象.classList
    

    element.classList 的常用方法:

    add("class样式名称")  		// 添加一个class样式
    remove("class样式名称") 	// 移除一个class样式
    contains("class样式名称") 	// 判断是否包含某一个样式,包含返回true,不包含返回false
    toggle("class样式名称") 	// 切换一个class样式。有则删除,无则添加
    
  • 添加事件:通过对象名.事件属性名 给元素添加事件

  • 示例:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>dom操作样式</title>
    </head>
    <body>
    <style>
        #p1{background-color: red}
        .mp{color:green}
        .mpp{background-color: lightgray;}
    </style>
    <p id="p1">1. 设置一个css样式</p>
    <p id="p2">2. 批量设置css样式</p>
    <p id="p3" class="mpp">3. 通过class设置样式</p>
    <p id="p4">4. 切换class样式</p>
    <input type="button" value="切换样式" id="b1" />
    
    <script >
        let p1 = document.querySelector("#p1");		//获取段落标签
        let p2 = document.querySelector("#p2");		//获取段落标签
        let p3 = document.querySelector("#p3");		//获取段落标签
        let p4 = document.querySelector("#p4");		//获取段落标签
    
        // 内嵌式的样式,通过style对象获取不了
        console.log("p1 backgroundColor: " + p1.style.backgroundColor);	//""
        // 给p1设置css样式
        // 白色字体
        p1.style.color = "white";
        // 黑色背景
        p1.style.backgroundColor = "black";
        // 获取p1的样式名
        console.log(p1.style.backgroundColor);	//black
        console.log(p1.style.color);			//white
        // 隐藏不显示
        //p1.style.display = "none";
        // 显示
        //p1.style.display = "block";
    
        // 给p2批量设置css样式
        p2.style.cssText = "color: red;font-family: '楷体';border: 1px solid green";
    
        // 给p3通过class设置样式
        // a.给元素添加class属性的方式添加样式
        //p3.setAttribute("class","mp mpp");
        // b.使用className属性添加(两种方式)
        //p3.className= "mp mpp";
        p3.className = p3.className + " mp";	// mpp + " mp"==>mpp mp
        console.log("p3 className: " + p3.className);//mp mpp
    
        // 切换class样式
        // 获取p4的class样式集合
        var p4List = p4.classList;
        // 添加一个class样式
        p4List.add("mpp");
        // 判断某一个样式是否存在
        console.log(p4List.contains("mpp"));	//true
        console.log(p4List.contains("mp"));		//false
        // 添加一个class样式
        p4List.add("mp");
        console.log(p4List);
        // 移除一个class样式
        p4List.remove("mp");
    
        // 获取id是b1的按钮
        var b1Ele = document.querySelector("#b1");
        // 通过对象名.事件属性名,给元素添加事件
        b1Ele.onclick = function () {
            //切换,无则添加,有则删除
            p4List.toggle("mp");
        }
    </script>
    </body>
    </html>
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506860.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入解析Hadoop生态核心组件:HDFS、MapReduce和YARN

这里写目录标题 01HDFS02Yarn03Hive04HBase1&#xff0e;特点2&#xff0e;存储 05Spark及Spark Streaming关于作者&#xff1a;推荐理由&#xff1a;作者直播推荐&#xff1a; 一篇讲明白 Hadoop 生态的三大部件 进入大数据阶段就意味着进入NoSQL阶段&#xff0c;更多的是面向…

代码随想录阅读笔记-二叉树【二叉树的所有路径】

题目 给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 思路 这道题目要求从根节点到叶子的路径&#xff0c;所以需要前序遍历&#xff0c;这样才方便让父节点指向孩子节点&#xff0c;找到对应的路径。 在这道…

【CSS】基础选择器

目录 标签选择器 id选择器 类选择器 CSS的编写地点&#xff1a; 标签选择器 说明&#xff1a;标签选择器实际上就是HTML标签元素&#xff08;可以是任何HTML元素&#xff09;&#xff0c;用来改变一个指定标签的样式 示例&#xff1a; <style type"text/css"…

QQ邮箱SMTP发送邮件时要注意哪些安全设置?

QQ邮箱SMTP发送邮件的步骤&#xff1f;如何配置QQ邮箱服务器&#xff1f; 在使用QQ邮箱SMTP发送邮件时&#xff0c;安全设置是至关重要的一环。不当的安全设置不仅可能导致邮件发送失败&#xff0c;还可能使你的账户面临安全风险。下面&#xff0c;AokSend就来详细探讨一下QQ邮…

基于单片机16位智能抢答器设计

**单片机设计介绍&#xff0c;基于单片机16位智能抢答器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机16位智能抢答器设计是一个结合了单片机技术、显示技术、按键输入技术以及声音提示技术的综合性项目。其设计…

脑机辅助推导算法

目录 一&#xff0c;背景 二&#xff0c;华容道中道 1&#xff0c;问题 2&#xff0c;告诉脑机如何编码一个正方形格子 3&#xff0c;让脑机汇总信息 4&#xff0c;观察图&#xff0c;得到启发式算法 5&#xff0c;根据启发式算法求出具体解 6&#xff0c;可视化 一&am…

苹果App审核大揭秘

苹果上架要求是苹果公司对于提交应用程序到苹果商店上架的要求和规定。这些要求主要是为了保证用户体验、应用程序的质量和安全性。以下是苹果上架要求的详细介绍&#xff1a;1. 应用程序的内容和功能必须符合苹果公司的规 苹果上架要求是苹果公司对于提交应用程序到苹果商店上…

u盘不显示盘符怎么办,u盘不显示盘符

我们经常使用电脑,难免会遇到各种问题,其中U盘不显示盘盘符也是常见的一种。用u盘插入电脑usb接口后,却识别不出u盘,而且更换usb接口以后还是没有u盘盘符,这可怎么用呢?针对此问题,极客狗整理了两个处理方法,接下来带小伙伴一起看看u盘不显示盘符怎么办。遇到同样问题的…

Python数据结构实验 查找实验(一)

一、实验目的 1&#xff0e;熟悉查找的基本概念&#xff0c;包括静态查找表和动态查找表、内查找和外查找之间的差异以及平均查找长度等&#xff1b; 2&#xff0e;掌握线性表上的各种查找算法&#xff0c;包括顺序查找、折半查找和分块查找的基本思路、算法实现和查找效率等…

游戏引擎中的声音系统

一、声音基础 1.1 音量 声音振幅的大小 压强p&#xff1a;由声音引起的与环境大气压的局部偏差 1.2 音调 1.3 音色 1.4 降噪 1.5 人的听觉范围 1.6 电子音乐 将自然界中连续的音乐转换成离散的信号记录到内存中 采样 - 量化 - 编码 香农定理&#xff1a;采样频率是信…

云原生技术精选:探索腾讯云容器与函数计算的最佳实践

文章目录 写在前面《2023腾讯云容器和函数计算技术实践精选集》深度解读案例集特色&#xff1a;腾讯云的创新实践与技术突破精选案例分析——Stable Diffusion云原生部署的最佳实践精选集实用建议分享总结 写在前面 在数字化转型的浪潮下&#xff0c;云计算技术已成为企业运营…

shell脚本发布docker-nginx vue2 项目示例

docker、git、node.js安装略过。 使git pull或者git push不需要输入密码操作方法 nginx安装在docker容器里面&#xff0c;参见&#xff1a;https://blog.csdn.net/HSJ0170/article/details/128631155 姊妹篇&#xff08;宿主机nginx&#xff0c;非docker-nginx&#xff09;&am…

Real-data WRF | setup and run and experiment

前言 Parent Model 用于初始化和边界条件的网格数据 GFS/FNL、NAM、RAP/HRRR、重新分析&#xff08;NARR、CFSR、NNRP、ERA-interim、ERA5 等&#xff09;、其他 WRF 运行 WPS WRF 预处理系统&#xff08;由 geogrid、ungrib 和 metgrid 程序组成&#xff09; WRF 模拟几…

【Linux多线程】生产者消费者模型

【Linux多线程】生产者消费者模型 目录 【Linux多线程】生产者消费者模型生产者消费者模型为何要使用生产者消费者模型生产者消费者的三种关系生产者消费者模型优点基于BlockingQueue的生产者消费者模型C queue模拟阻塞队列的生产消费模型 伪唤醒情况&#xff08;多生产多消费的…

【手册】——mq延迟队列

目录 一、背景介绍二、思路&方案三、过程1.项目为啥用延迟队列&#xff1f;2.项目为啥用三方延迟队列&#xff1f;3.项目中为啥用rabbitmq延迟队列&#xff1f;4.rabbitmq延迟队列的安装5.rabbitmq的延迟队列配置方式5.1.exchange配置5.2.queues配置5.3.exchange和queues的…

文件操作(1)【文件打开和关闭】【文件的顺序读写(各种函数)】【sprintf和sscanf的理解】

一.什么是文件&#xff1f; 在程序设计中我们一般谈的文件有两种&#xff1a;程序文件和数据文件 1.程序文件 程序文件是包含计算机程序代码的文件。它通常包含一系列指令和算法&#xff0c;用于执行特定的任务或实现特定的功能。程序文件可以由不同的编程语言编写&#xff…

【C语言环境】Sublime中运行C语言时MinGW环境的安装

要知道&#xff0c;GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的&#xff0c;如果我们想在 Windows 平台使用 GCC 编译器&#xff0c;可以安装 GCC 的移植版本。 目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种&#xff0c;分别为 MinGW 和 Cygwin…

【Python】——变量名的命名规则

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Linux shell编程学习笔记42:md5sum

0 前言 前几天在国产电脑上遇到一个问题&#xff0c;先后接到两个文件&#xff0c;如何判断这两个文件内容是否相同&#xff1f; 如果是在Windows系统&#xff0c;可以用fc命令&#xff0c;或者用我自己写的FileInfo&#xff0c;提取两个文件有MD5、SHA1、CRC32值进行比较来判…

GANs和Diffusion模型(3)

接GANs和Diffusion模型&#xff08;2&#xff09; 扩散(Diffusion)模型 生成学习三重困难(Trilemma) 指生成学习(genrative learning)的模型都需要满足三个需求&#xff1a; 高质量的采样(High Quality Samples)&#xff1a;模型应该能生成非常高质量的采样快速采样(Fast S…