蓝桥杯——朋友圈(防抖函数)

目标

请在 index.js 文件中补全代码,具体需求如下:

  1. 请将 debounce 函数补充完整,实现一个延迟为 delay 毫秒的防抖函数。
  2. 用户在输入框( id=text )输入文字时,将用户输入的内容存入 localStorage 中,缓存的 key 名称为 savedText ;页面加载时检查 localStorage 中是否有缓存文本数据,若有则将输入框( id=text )内容设置为相应的文本;当用户点击“发表”按钮( id=post )时,清空输入框( id=text )中的内容,并将 localStorage 内缓存的文本数据移除。
    • 此阶段的页面效果可以查看 effect-1.gif 文件。
  3. 当输入框中没有文字时,将“发表”按钮( id=post )的 disabled 属性值设置为 disabled ;如果输入框中有文字则移除该属性。
    • 注意:当用户点击“发表”按钮和初次进入页面时也会改变输入框的内容,此时也需要对按钮的情况作出判断。
    • 页面最终效果可以查看 effect-2.gif 文件。

防抖函数的生成:

// 防抖工具函数
/*** @param  {function} fn  - 回调函数* @param  {string} delay - 函数执行延迟,单位为ms*/
function debounce(fn, delay) {// return fn; // 这一行是为了确保页面正常运行,可以去掉// TODO: 请实现函数防抖的功能let timer='';return function(){if(timer) clearIntervaltimer=setTimeout(fn,delay)}}

本地存储

document.addEventListener("DOMContentLoaded", function() {// TODO: 请在此补充页面加载时缓存检查的代码let data = localStorage.getItem("savedText");if(!data){document.getElementById("post").setAttribute("disabled","disabled");}else{document.getElementById("text").innerHTML = data;}
});

题解

document.addEventListener("DOMContentLoaded", function() {// TODO: 请在此补充页面加载时缓存检查的代码let data = localStorage.getItem("savedText");if(!data){document.getElementById("post").setAttribute("disabled","disabled");}else{document.getElementById("text").innerHTML = data;}
});// 当文本框输入内容改变时,动态地设置localStorage缓存,并根据有没有文本改变按钮状态
// 此处使用了防抖函数,避免太过频繁地更新缓存
document.getElementById("text").addEventListener("input",debounce(function() {// 提示正在保存中document.getElementById("prompt").textContent = "正在保存中...";// TODO: 请在此补充用户输入时设置缓存和调整按钮状态的代码// TODO-END// 过一段时间后提示保存完成,模拟上传数据至后台的效果setTimeout(function() {document.getElementById("prompt").textContent = "内容已保存";}, 750);}, 200)
);document.getElementById("post").addEventListener("click", function() {const content = document.getElementById("text").value;const element = createContent(content);document.querySelector(".contents").appendChild(element);document.getElementById("prompt").textContent = "";// TODO: 请在此补充用户点击“发表”按钮时清空文本框和缓存的代码
});// 防抖工具函数
/*** @param  {function} fn  - 回调函数* @param  {string} delay - 函数执行延迟,单位为ms*/
function debounce(fn, delay) {// return fn; // 这一行是为了确保页面正常运行,可以去掉// TODO: 请实现函数防抖的功能let timer='';return function(){if(timer) clearIntervaltimer=setTimeout(fn,delay)}}// 用户点击“发表”后,创建一条新信息的DOM元素
function createContent(content) {const div = document.createElement("div");const d = new Date();const deleteBtn = document.createElement("button");deleteBtn.textContent = "删除";deleteBtn.addEventListener("click", function() {div.remove();});div.innerHTML = `<div><span class="content">${content}</span><span class="date">${d.toLocaleString()}</span></div>`;div.appendChild(deleteBtn);return div;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

路由器里如何设置端口映射?

在互联网时代&#xff0c;我们经常需要将内部网络的服务暴露到公网以便其他人访问。直接将内部网络暴露在公网上存在一定的安全风险。为了解决这个问题&#xff0c;我们可以利用路由器里设置端口映射来实现将特定端口的访问请求转发到内部网络的特定设备上。 端口映射的原理 端…

Leetcode 3091. Apply Operations to Make Sum of Array Greater Than or Equal to k

Leetcode 3091. Apply Operations to Make Sum of Array Greater Than or Equal to k 1. 解题思路2. 代码实现 题目链接&#xff1a;3091. Apply Operations to Make Sum of Array Greater Than or Equal to k 1. 解题思路 这一题的话本质上算是一个数学题&#xff0c;具体就…

Matplotlib数据可视化实战-2绘制折线图(1)

函数plot是matplotlib.pyplot模块中的一个重要函数&#xff0c;用于在图形中绘制折线图。其基本用法是plot(x, y, [fmt], **kwargs)&#xff0c;其中x和y分别代表X轴和Y轴上的数据点&#xff0c;通常是以列表、数组或一维序列的形式给出。通常用的参数有&#xff1a; 基本参数…

Programming Abstractions in C阅读笔记:p331-p337

《Programming Abstractions in C》学习第79天&#xff0c;p331-p337&#xff0c;总计7页。 一、技术总结 /** File: stack.h* -------------* This interface defines an abstraction for stacks. In any* single application that uses this interface, the values in* the…

IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS (T-ITS) 投稿记录,欢迎大家评论~

投稿整个流程时间点&#xff1a;Submitted: 17 October 2023 Awaiting Reviewer Assignment: From 18 October 2023 to 6 November 2023 Under review: From 6 November 2023 to 30 November 2023 Awaiting reviewer scores: From 1 December 2023 to 13 January 2024 Aw…

【课程】Java构架师42套阶段课程

01.第一阶段、Svn版本管理与代码上线架构方案 02.第二阶段、实战Java高并发程序设计模式视频 03.第三阶段、深入JVM内核一原理、诊断与优化 04.第四阶段、基于Netty的RPC架构实战演练 05.第五阶段、Git分布式版本控制系统权威指南 06.第六阶段、Redis从入门到精通、集群与应用 …

Unity学习笔记 6.2D换帧动画

下载源码 UnityPackage 目录 1.导入图片 1.1. 图片的叠放顺序 2.图片切片 3.用动画控制器让马&#x1f40e;动起来 1.导入图片 直接拖拽进场景 检查 Texture Type&#xff08;纹理类型&#xff09;是否为 Sprite 创建2D精灵对象&#xff0c;拖拽图片到Sprite&#xff08…

【tips】Git使用指南

文章目录 一、Git介绍1. 什么是Git2.Git对比SVN3.Git安装 二.Git常用命令1. git config2. 初始化本地库3. 工作区、暂存区和版本库4. git add5. git commit6. git reset 与 git revertgit resetgit revert 三. Git 分支1.初识分支2.创建分支3.切换分支4.合并分支5.删除分支 四.…

6.4 Dropout正则化

1、Dropout Dropout是一种正则化技术&#xff0c;通过防止特征的协同适应&#xff0c;可用于减少神经网络中的过拟合。 Dropout的效果非常好&#xff0c;实现简单且不会降低网络速度&#xff0c;被广泛使用。 特征的协同适应指的是在训练模型时&#xff0c;共同训练的神经元…

【算法篇】逐步理解动态规划1(斐波那契数列模型)

目录 斐波那契数列模型 1. 第N个泰波那契数 2.使用最小花费爬楼梯 3.解码方法 学过算法的应该知道&#xff0c;动态规划一直都是一个非常难的模块&#xff0c;无论是状态转移方程的定义还是dp表的填表&#xff0c;都非常难找到思路。在这个算法的支线专题中我会结合很多力…

stm32启动文件里面的__main和主函数main()

一、__main和main()之间的关系 先来对stm32启动过程简单学习 启动文件里面的Reset_Handler&#xff1a; 调用过程&#xff1a; stm32在启动后先进入重启中断函数Reset_Handler&#xff0c;其中会先后调用SystemInit和__main函数&#xff0c; __main函数属于c库函数&…

在mysql中索引字段类型是设置为bigint?还是varchar好?

在数据库设计中&#xff0c;选择索引字段的数据类型时&#xff0c;bigint和varchar各有优缺点&#xff0c;具体选择哪种类型取决于字段的用途、数据特性和查询需求。以下是对两者特点的对比&#xff1a; bigint: •优点&#xff1a; •大整数类型&#xff0c;适合存储整数或长整…

基于SpringBoot+Vue健身房管理系统(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

Selenium 驱动配置 和 元素定位

目录 驱动配置 元素定位 By类普通参数方法 CSS选择器参数方法 By类xpath参数方法 驱动配置 //新建chrome浏览器驱动配置 ChromeOptions options new ChromeOptions();//添加参数&#xff0c;允许远程访问 options.addArguments("--remote-allow-origins*");//新…

Transformer的前世今生 day03(Word2Vec、如何使用在下游任务中)

前情回顾 由上一节&#xff0c;我们可以得到&#xff1a; 任何一个独热编码的词都可以通过Q矩阵得到一个词向量&#xff0c;而词向量有两个优点&#xff1a; 可以改变输入的维度&#xff08;原来是很大的独热编码&#xff0c;但是我们经过一个Q矩阵后&#xff0c;维度就可以控…

day29|leetcode|C++|491. 非递减子序列|46. 全排列|47. 全排列 II

Leetcode 491. 非递减子序列 链接&#xff1a;491. 非递减子序列 thought: 设 stack 中最后一个值的位置为 last。如果 stack 为空&#xff0c;则 last -1。 设当前正在处理的位置为 pos。如果在 nums 的子区间 [last1, pos) 中&#xff0c;存在和 nums[pos] 相同的值&…

Kafka broker

1. zk中存储的kafka信息 /kafka/brokers/ids存储了在线的broker id。 /kafka/brokers/topics/xxx/partitions/n/state存储了Leader是谁以及isr队列 /kafka/controller辅助Leader选举&#xff0c;每个broker都有一个controller&#xff0c;谁先在zk中注册上&#xff0c;谁就辅助…

Autosar MCAL配置——Fls

文章目录 一、FLS基础知识二、达芬奇配置2.1 创建Fls模块2.2 FlsGeneralFlsDataFlash2.3 FlsConfigSet0FlsSector2.4 FlsPublishInfomation一、FLS基础知识 主要提供对Flash的读,写,擦相关操作服务;如果底层硬件支持的话,也提供一些配置接口来设置擦/写保护功能。 flash操…

低成本养号降低封号风险,这种方式你试过了吗?

众所周知&#xff0c;对于那些主要依赖海外社交媒体平台&#xff08;如Facebook脸书、推特X、Instagram等&#xff09;进行引流和投广、谷歌上架应用等拓展海外业务、主要赚海外money的朋友们而言&#xff0c;账号一旦被封&#xff0c;就会严重影响业务进程&#xff0c;甚至可能…

腾讯云服务器多少钱一年?价格表新鲜出炉(2024)

腾讯云服务器多少钱一年&#xff1f;61元一年起。2024年最新腾讯云服务器优惠价格表&#xff0c;腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…