js微博发布案例

思路:

需求1:检测用户输入的字数

注册input事件

将输入文本长度赋值给对应的数值

需求2:输入不能为空

点击按钮之后判断 如果输入为空,则提示不能输入为空,并直接return

为了防止无意义的一些输入,利用字符串.trim()可以去掉首尾空格

当输入为空点击发布按钮以后 将输入内容清空 计数器也变为0

需求3 新增留言 应写在点击事件内部

创建li 然后里面通过innerHTML追加数据

追加给父元素ul ,用父元素.insertBefore(插入到当前元素的前面)

需求4:删除事件必须写在点击事件里面

删除事件应该放在追加ul的前面这样创建元素的同时顺便绑定了点击事件

删除操作 删除li 父元素.removeChild(子元素)

需求5:重置

发布完一条消息后将表单的内容重置为空

 代码部分:

HTML代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><link rel="stylesheet" href="./css/weibo.css"><script src="../发布微博案例/jquery-3.7.1.slim.js"></script>
</head><body><div class="w"><div class="controls"><img src="images/tip.png" alt=""><br><textarea placeholder="说点什么吧..." id="area" cols="30" rows="10" maxlength="200"></textarea><div><span class="useCount">0</span><span>/</span><span>200</span><button id="send">发布</button></div></div><div class="contentList"><ul id="list"></ul></div></div><script src="./index.js"></script>
</body></html>

css代码

* {margin: 0;padding: 0;
}ul {list-style: none;
}.w {width: 900px;margin: 0 auto;
}.controls textarea {width: 878px;height: 100px;resize: none;border-radius: 10px;outline: none;padding-left: 20px;padding-top: 10px;font-size: 18px;
}.controls {overflow: hidden;
}.controls div {float: right;
}.controls div span {color: #666;
}.controls div .useCount {color: red;
}.controls div button {width: 100px;outline: none;border: none;background: rgb(0, 132, 255);height: 30px;cursor: pointer;color: #fff;font: bold 14px '宋体';transition: all 0.5s;
}.controls div button:hover {background: rgb(0, 225, 255);
}.controls div button:disabled {background: rgba(0, 225, 255, 0.5);
}.contentList {margin-top: 50px;
}.contentList ul {height: 800px;
}.contentList li {/* display: none; */padding: 20px 0;border-bottom: 1px dashed #ccc;height: 60px;
}.contentList li a {margin-left: 800px;
}

js代码

const data =[{uname:'张三',imgSrc:'images/03.jpg'},{uname:'李四',imgSrc:'images/03.jpg'},{uname:'王麻子',imgSrc:'images/03.jpg'},{uname:'小刘',imgSrc:'images/03.jpg'},];
// 需求1:检测用户输入的字数
let textarea = document.querySelector('textarea');
let useCount = document.querySelector('.useCount');
let btn = document.querySelector('#send');
let ul = document.querySelector('#list');
// 注册input事件
textarea.addEventListener('input', function () {// 将输入文本长度赋值给对应的数值useCount.innerHTML = this.value.length;
});
// 需求2:输入不能为空
// 点击按钮之后判断 如果输入为空,则提示不能输入为空,并直接return
btn.addEventListener('click', function () {// 为了防止无意义的一些输入 利用字符串.trim()可以去掉首尾空格if (textarea.value.trim() === '') {// 当输入为空点击发布按钮以后 将输入内容清空 计数器也变为0textarea.value = '';useCount.innerHTML = 0;return alert('内容不能为空');}
// 随机函数function getRandom(min, max) {return Math.floor(Math.random() * (max - min + 1)) + min;}let index = getRandom(0, data.length - 1);// 需求3 新增留言 应写在点击事件内部// 创建一个小li 然后里面通过innerHTML追加数据let li = document.createElement('li');li.innerHTML = `<div class="info"><img class="imgs" src=${data[index].imgSrc}><span class="username">${data[index].uname}</span><button class="del">×</button><div class="content">${textarea.value}</div><div class="send-time">${new Date().toLocaleString()}</div></div>`
// 需求4:删除事件必须写在点击事件里面
// 删除事件应该放在追加ul的前面这样创建元素的同时顺便绑定了点击事件let del = li.querySelector('.del');del.addEventListener('click', function () {// 删除操作 删除li 父元素.removeChild(子元素)ul.removeChild(li);});
// 追加给父元素ul ,用父元素.insertBefore(插入到当前元素的前面)ul.insertBefore(li, ul.children[0]);
// 需求5:重置
// 发布完一条消息后将表单的内容重置为空textarea.value = '';useCount.innerHTML = 0;
});

拓展:按下回车键发布信息
这里需要用到事件对象来实现,通过文本输入框的'keyup'(按键弹起)事件的key属性值,来判断当前用户输入键盘的类型,只要event.key === 'Enter',就调用btn.click()方法,自动触发发布按钮。

注意这里不宜使用keydown属性,使用keydown则会导致文本输入框的内容无法清空,始终有回车键存在于文本输入框内。

textarea.addEventListener('keyup',function(event){// 只要 event.key === 'Enter'if (event.key === 'Enter'){// 回车发布新闻 与点击发布按钮效果等价// 回车后 自动触发点击按钮btn.click() }       })

效果:


 

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

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

相关文章

Redis从入门到精通(二十)Redis最佳实践(一)优雅的Key结构、拒绝BigKey

文章目录 第7章 Redis最佳实践7.1 Redis键值设计7.1.1 优雅的Key结构7.1.2 拒绝BigKey7.1.2.1 何为BigKey7.1.2.2 BigKey的危害7.1.2.3 如何发现BigKey7.1.2.4 如何删除BigKey 7.1.3 恰当的数据类型7.1.3.1 存储Java对象7.1.3.2 存储hash数据 7.1.4 小结 第7章 Redis最佳实践 …

用html写一个窗口风景动画

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>窗边风景动画</title><link rel"stylesheet" href"./style.css"> </head> <body><!-- 窗户 -->&l…

【OpenHarmony】XTS环境配置

零、参考 1、xts测试环境配置&#xff1a;https://www.yuque.com/u25440504/ehvzki/ik2fso 2、Windows安装Python、pip、easy_install的方法&#xff1a;https://pythonjishu.com/bmxqeisbkzgrpnn/ 3、Python中easy_install 和 pip 的安装及使用&#xff1a; https://blog.c…

Vision Pro 零基础教程:1.机器视觉概述

文章目录 机器视觉简介机器视觉的发展历史机器视觉的结构组成机器视觉的应用工业相机分类1. 按传感器类型分类&#xff1a;2. 按分辨率分类&#xff1a;3. 按扫描方式分类&#xff1a;4. 按输出信号类型分类&#xff1a;5. 按应用领域分类&#xff1a;6. 按接口类型分类&#x…

springSecurity-记住我(Remember me)

一.记住我概述 Remember me(记住我)记住我&#xff0c;当用户发起登录勾选了记住我&#xff0c;在一定的时间内再次登录就不用输入用户名和密码了&#xff0c;即使浏览器退出重新打开也是如此。 二.流程分析 在SpringSecurity中提供RememberMeAuthenticationFilter过滤器来实…

day10 | 栈与队列 part-2 (Go) | 20 有效的括号、1047 删除字符串中的所有相邻重复项、150 逆波兰表达式求值

今日任务 20 有效的括号 (题目: . - 力扣&#xff08;LeetCode&#xff09;)1047 删除字符串中的所有相邻重复项 (题目: . - 力扣&#xff08;LeetCode&#xff09;)150 逆波兰表达式求值 (题目: . - 力扣&#xff08;LeetCode&#xff09;) 20 有效的括号 题目: . - 力扣&…

Redis入门到通过之解决Redis缓存击穿、缓存穿透、缓存雪崩

文章目录 ☃️缓存击穿❄️❄️解决方案一、使用锁来解决&#xff1a;❄️❄️解决方案二、逻辑过期方案❄️❄️解决方案三、永不过期 主动更新❄️❄️解决方案四、接口限流❄️❄️实战❄️❄️❄️利用互斥锁解决缓存击穿问题❄️❄️❄️利用逻辑过期解决缓存击穿问题 ☃️…

Python-VBA函数之旅-float函数

目录 1、float函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、相关文章&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.2135.3001.5421 float函数在 Python 中的实际应用场景非常广泛&#xff0c;几乎涉及到任何需要处理…

人才测评的方法有哪些?

人才测评是企业在筛选人才的时候必然会使用的策略&#xff0c;为了节省企业HR在招聘时的成本&#xff0c;又极大提高了人才和岗位的匹配度&#xff0c;从企业发展和员工个人发展来看&#xff0c;起到了双赢的作用&#xff0c;在线人才测评是现代企业招聘&#xff0c;人才选拔&a…

递归、搜索与回溯算法——二叉树的深搜

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享分治递归、搜索与回溯算法中关于二叉树的深搜的专题 如果有不足的或者错误的请您指出! 目录 1.计算布尔值的二叉树1.1解析1.2题解 2.求根节点到叶子节点数字之和2.1解析2.2题解…

【漏洞复现】泛微E-Office jx2_config 存在信息泄露漏洞

0x01 阅读须知 “如棠安全的技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供…

超声波洗眼镜机有用吗?哪些洗眼镜值得入?超声波洗眼镜好不好用

在日常生活中&#xff0c;眼镜不仅是视力不佳者的重要辅助工具&#xff0c;更是时尚搭配的一部分。然而&#xff0c;长时间佩戴眼镜会不可避免地积累各种污垢和细菌&#xff0c;从油脂、指纹到灰尘等&#xff0c;这些不仅影响视觉效果&#xff0c;更有可能对眼部健康造成潜在威…

云服务器安装Mysql、MariaDB、Redis、tomcat、nginx

前置工作 进入根目录 cd / 都在/usr/local/src文件夹&#xff09; 上传压缩包 rz 压缩包 Mysql 1.下载并安装MySQL官方的 Yum Repository wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum…

黑马程序员——mysql——day05——反射、注解、动态代理

目录&#xff1a; 类的加载 目标讲解 类的加载过程类的加载机制小结类加载器 目标讲解 类加载器的作用类加载器的分类&#xff1a;获取类加载器的方式小结双亲委派机制 目标讲解 3种类加载器的关系双亲委派机制小结反射:概述 目标讲解 反射反射技术的应用案例&#xff1a;反射…

Python实现exe小工具

1、实例代码 import tkinter as tk from tkinter import messagebox from tkinter import ttk import requestsdef submit():input_text entry.get()if len(input_text) 0:messagebox.showinfo("提示", "请输入您所要提问的问题&#xff01;")returnsel…

Python 数据结构和算法实用指南(一)

原文&#xff1a;zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 前言 数据结构和算法是信息技术和计算机科学工程学习中最重要的核心学科之一。本书旨在提供数据结构和算法的深入知识&#xff0c;以及编程…

uniapp之消除图片的空白占用空间

我们在使用uniapp开发的过程中一定会遇到一个情况就是我们加载的图片总有一点空白出现在不该出现的地方代码如下 <view style"background:#ff0000;"><image style"width:100%;"src"https://t7.baidu.com/it/u1819248061,230866778&fm19…

HarmonyOS真机调试页面运行卡顿/黑屏解决方法,亲测有效

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 用mate40等发行时间相对较早但系统是HarmonyOS4.0的真机调试 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 程序点击容易卡顿或黑屏 原因分析&#xff1a; CPU兼容问题导致屏幕…

[Collection与数据结构] 二叉树(三):二叉树精选OJ例题(下)

1.二叉树的分层遍历 OJ链接 上面这道题是分层式的层序遍历,每一层有哪些结点都很明确,我们先想一想普通的层序遍历怎么做 /*** 层序遍历* param root*/public void levelOrder1(Node root){Queue<Node> queue new LinkedList<>();queue.offer(root);while (!qu…

Resilience中的RateLimiter

Resilience中的RateLimiter 一、RateLimiter&#xff08;限流&#xff09;1.常见的限流算法漏桶算法&#xff08;Leaky Bucket&#xff09;令牌桶算法&#xff08;Token Bucket&#xff09;——Spring cloud 默认使用该算法滚动时间窗口&#xff08;tumbling time window&#…