Web实现名言生成器:JavaScript DOM基础与实例教程

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • Web实现名言生成器:JavaScript DOM基础与实例教程
    • JavaScript DOM基础
    • 实例:名言生成器
      • 实现效果
      • 创建HTML结构
      • 编写JavaScript逻辑
        • 初始化名言列表
        • 获取随机名言
        • 更新名言显示
      • 样式美化
    • 全部代码
    • 结语
    • 🎉 往期精彩回顾

Web实现名言生成器:JavaScript DOM基础与实例教程

名言生成器是一个简单而有趣的Web应用,它可以随机显示历史上著名人物的名言。通过这个教程,我们将学习如何使用JavaScript DOM API来实现这个功能,并介绍相关的JavaScript DOM基础知识。

JavaScript DOM基础

DOM(Document Object Model)是HTML文档的编程接口,它允许我们通过JavaScript访问和操作网页元素。在JavaScript中,我们可以使用DOM API来获取元素、修改内容、绑定事件等。

实例:名言生成器

实现效果

在这里插入图片描述
体验地址:

http://8.210.131.139/QuoteGenerator.html

创建HTML结构

首先,我们需要创建一个包含名言显示区域和生成按钮的HTML结构。

<div class="quote-box"><p class="text">这是名言部分</p><p class="author">我是作者</p><button id="new-quote">生成名言</button><a class="tweet-quote" href="https://blink.csdn.net/">分享到 CSDN&Blink</a>
</div>

编写JavaScript逻辑

初始化名言列表

在JavaScript中,我们首先定义一个包含名言和作者的数组。

const quotes = [{quote: "生命不止,奋斗不息。",author: "方志敏",},{quote: "知识就是力量。",author: "李约瑟",},// ... 更多名言和作者列表 ...
];
获取随机名言

定义getRandomQuote函数来从名言列表中随机获取一条名言。

function getRandomQuote() {const index = Math.floor(Math.random() * quotes.length);return quotes[index];
}
更新名言显示

定义一个事件监听器,当用户点击“生成名言”按钮时,调用getRandomQuote函数获取新的名言,并更新页面上的内容。

document.querySelector("#new-quote").addEventListener("click", function () {const quote = getRandomQuote();const textElement = document.querySelector(".text");const authorElement = document.querySelector(".author");textElement.innerText = quote.quote;authorElement.innerText = `- ${quote.author}`;
});

样式美化

为了让名言生成器看起来更美观,我们可以添加一些CSS样式。

/* ... 样式代码 ... */.quote-box {width: 500px;margin: 100px auto;padding: 30px;border-radius: 5px;box-shadow: 0px 0px 10px 2px rgba(0, 0, 0, 0.2);}.text {font-size: 24px;font-style: italic;margin-bottom: 20px;}.author {font-size: 18px;text-align: right;}#new-quote {background-color: #4caf50;color: #fff;border: none;padding: 10px 20px;margin-top: 20px;border-radius: 5px;cursor: pointer;}.tweet-quote {display: block;text-align: right;margin-top: 10px;color: #4caf50;}

全部代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>洛可可白😁名言生成器</title><style>.quote-box {width: 500px;margin: 100px auto;padding: 30px;border-radius: 5px;box-shadow: 0px 0px 10px 2px rgba(0, 0, 0, 0.2);}.text {font-size: 24px;font-style: italic;margin-bottom: 20px;}.author {font-size: 18px;text-align: right;}#new-quote {background-color: #4caf50;color: #fff;border: none;padding: 10px 20px;margin-top: 20px;border-radius: 5px;cursor: pointer;}.tweet-quote {display: block;text-align: right;margin-top: 10px;color: #4caf50;}</style></head><body><div class="quote-box"><p class="text">这是文言部分</p><p class="author">我是作者</p><button id="new-quote">生成名言</button><a class="tweet-quote" href="https://blink.csdn.net/">分享到 CSDN&Blink</a></div></body><script>const quotes = [{quote: "生命不止,奋斗不息。",author: "方志敏",},{quote: "知识就是力量。",author: "李约瑟",},{quote: "先苦后甜,后苦变甜;先甜后苦,后甜变苦。",author: "林语堂",},{quote: "成功是一份耕耘,而非一次得手。",author: "贾平凹",},{quote: "宝剑锋从磨砺出,梅花香自苦寒来。",author: "陆游",},{quote: "宝剑不磨,其锋不利;人不学习,其智不明。",author: "李光耀",},{quote: "一份耕耘,一份收获;一份付出,一份回报。",author: "王阳明",},{quote: "只要功夫深,铁杵磨成针。",author: "李白",},{quote: "有志者事竟成。",author: "龚自珍",},{quote: "天道酬勤。",author: "韩愈",},{quote: "千里之行始于足下。",author: "老子",},{quote: "路漫漫其修远兮,吾将上下而求索。",author: "屈原",},{quote: "读书破万卷,下笔如有神。",author: "李白",},{quote: "吃一堑,长一智。",author: "佚名",},{quote: "先天下之忧而忧,后天下之乐而乐。",author: "范仲淹",},{quote: "一寸光阴一寸金,寸金难买寸光阴。",author: "陈毅",},{quote: "不积跬步,无以至千里;不积小流,无以成江海。",author: "荀子",},{quote: "前事不忘,后事之师。",author: "司马迁",},{quote: "生命中最大的浪费是把时间浪费在了等待上。",author: "李开复",},];function getRandomQuote() {const index = Math.floor(Math.random() * quotes.length);return quotes[index];}document.querySelector("#new-quote").addEventListener("click", function () {const quote = getRandomQuote();const textElement = document.querySelector(".text");const authorElement = document.querySelector(".author");textElement.innerText = quote.quote;authorElement.innerText = `- ${quote.author}`;});</script>
</html>

结语

通过上述步骤,我们实现了一个简单的名言生成器。这个实例展示了如何使用JavaScript DOM API来操作HTML元素,并响应用户事件。通过这个项目,你可以更好地理解DOM操作的基本概念和方法,以及如何在实际项目中应用它们。名言生成器是一个入门级的编程项目,适合初学者练习和提升编程技能。

如果对你有帮助,点赞👍、收藏💖、关注🔔是我更新的动力!👋🌟🚀

🎉 往期精彩回顾

Web实现表格单选全选与反选操作:JavaScript DOM基础与实例教程

  • 688阅读 · 14点赞 · 7收藏

H5实现Web ECharts教程:轻松创建动态数据图表

  • 855阅读 · 16点赞 · 4收藏

浏览器DOM操作基础:禁用右键菜单与阻止文字选中

  • 878阅读 · 30点赞 · 18收藏

缤纷浏览器 —— 一键换肤,个性随心换(H5实现浏览器换肤效果)

  • 560阅读 · 9点赞 · 5收藏

广州5k前端面试题惊呆我!!!(内容太肝,谨慎入内)

  • 821阅读 · 27点赞 · 23收藏

计算机专业学生的成长之路:超越课堂的自我提升策略

  • 732阅读 · 30点赞 · 25收藏

Node.js快速入门:搭建基础Web服务器与实现CRUD及登录功能

  • 906阅读 · 31点赞 · 16收藏

Node.js核心命令与工具:提升开发效率的实用指南

  • 745阅读 · 11点赞 · 18收藏

爆肝五千字!ECMAScript核心概念与现代JavaScript特性全解析

  • 1299阅读 · 25点赞 · 30收藏

打造精美响应式CSS日历:从基础到高级样式

  • 1082阅读 · 14点赞 · 19收藏

Ubuntu系统下C语言开发环境搭建与使用教程

  • 1337阅读 · 35点赞 · 9收藏

Vue 3响应式系统详解:ref、toRefs、reactive及更多

  • 1193阅读 · 23点赞 · 14收藏

爆肝两千字!掌握CSS选择器与响应式设计:从基础到高级应用

  • 1061阅读 · 27点赞 · 28收藏

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

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

相关文章

Linux-安装redis

安装指令 sudo apt-get install redis-server 启动服务 sudo systemctl start redis 查找redis路径 find / -name "filename" linux redis修改密码 sudo nano /etc/redis/redis.conf 找到 "requirepass" 这一行&#xff0c;取消注释并设置新的密码&…

跳蚱蜢(蓝桥杯)

文章目录 跳蚱蜢题目描述答案&#xff1a;20bfs 跳蚱蜢 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 如下图所示&#xff1a; 有 9 只盘子&#xff0c;排成 1 个圆圈。 其中 8 只盘子内装着 8 只蚱蜢&#xff…

包含多个段的程序

文章目录 包含多个段的程序在代码段中使用数据在代码段中使用栈将数据、代码、栈放入不同的段 包含多个段的程序 在代码段中使用数据 考虑这样一个问题&#xff0c;编程计算以下8个数据的和&#xff0c;结果存在ax 寄存器中&#xff1a;0123H&#xff0c;0456H&#xff0c;07…

ctfshow web入门 反序列化

254 分析代码&#xff1a; 如果用户名和密码参数都存在&#xff0c;脚本会创建一个 ctfShowUser 类的实例 $user。 接着&#xff0c;调用 $user->login($username, $password) 方法尝试登录。如果登录成功&#xff08;即用户名和密码与类中的默认值匹配&#xff09;&#…

详解机器学习概念、算法

目录 前言 一、常见的机器学习算法 二、监督学习和非监督学习 三、常见的机器学习概念解释 四、深度学习与机器学习的区别 基于Python 和 TensorFlow 深度学习框架实现简单的多层感知机&#xff08;MLP&#xff09;神经网络的示例代码&#xff1a; 欢迎三连哦&#xff01; 前言…

Spark Map 和 FlatMap 的比较

Spark Map 和 FlatMap 的比较 本节将介绍Spark中map(func)和flatMap(func)两个函数的区别和基本使用。 函数原型 map(func) 将原数据的每个元素传给函数func进行格式化&#xff0c;返回一个新的分布式数据集。 flatMap(func) 跟map(func)类似&#xff0c;但是每个输入项和…

JUC(二)

1、wait notify Owner 线程发现条件不满足&#xff0c;调用 wait 方法&#xff0c;即可进入 WaitSet 变为 WAITING 状态 BLOCKED 和 WAITING 的线程都处于阻塞状态&#xff0c;不占用 CPU 时间片 BLOCKED 线程会在 Owner 线程释放锁时唤醒 WAITING 线程会在 Owner 线程调用 …

Gelato Network的创始人HILMAR ORTH确认出席HackSummit2024区块链开发者大会

随着Web3技术的日新月异&#xff0c;区块链领域正以前所未有的速度席卷全球。在这一变革的浪潮中&#xff0c;备受瞩目的区块链盛会——Hack.Summit() 2024区块链开发者大会&#xff0c;将于2024年4月9日至10日&#xff0c;在香港数码港隆重登场。这一里程碑式的大会不仅标志着…

#Linux系统编程(read,open,close,write综合练习)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;不传参&#xff0c;指定拷贝文件&#xff0c;指定复制到文件 #include <stdio.h> #include <stdlib.h> #include <sys/typ…

大厂校招,已经在「这些平台」里卷起来了!

如今的校招卷内容&#xff0c;更卷渠道。传统的渠道已然无法满足企业的野心&#xff0c;于是他们将目光投向了主流社交平台。无论是在「微信公众号」、「B站」还是「小红书」&#xff0c;我们都不难发现大厂们「开卷」的身影。那么&#xff0c;参考它们的思路&#xff0c;企业该…

Python爬虫-批量爬取星巴克全国门店

前言 本文是该专栏的第22篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以星巴克为例,通过Python实现批量爬取目标城市的门店数据以及全国的门店数据。 具体的详细思路以及代码实现逻辑,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM…

【前端寻宝之路】JavaScript初学之旅

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-azUa9yH16cRXQUxE {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

解读EPO电梯行业数智化平台功能模块,开启电梯行业智能之旅

在当今的电梯行业中&#xff0c;数字化和智能化已经成为提升运营效率和服务质量的关键。EPO电梯行业数智化运营平台凭借其出色的功能模块&#xff0c;为行业带来了创新和变革。那么我们今天就来讲讲国辰智企的EPO电梯行业数智化运营平台的功能吧。 1、EOS土建出图&#xff1a;这…

贝尔曼最优方程【BOE】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 文章目录 强化学习笔记一、最优策略二、贝尔曼最优方程(BOE)三…

【linux】进程1 -- 属性

文章目录 进程PCBlinux查看进程 进程属性task_struct结构体一、进程标识符父子进程 二、进程状态磁盘睡眠 -- D 暂停和跟踪暂停 -- T和t僵尸进程 -- Z孤儿进程 三、进程优先级 进程 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序&#xff0c;操作系统进行…

反序列化漏洞简单知识

目录&#xff1a; 一、概念&#xff1a; 二、反序列化漏洞原因 三、序列化漏洞的魔术方法&#xff1a; 四、反序列化漏洞防御&#xff1a; 一、概念&#xff1a; 序列化&#xff1a; Web服务器将HttpSession对象保存到文件系统或数据库中&#xff0c;需要采用序列化的…

nodejs+vue反诈科普平台的设计与实现pythonflask-django-php

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低反诈科普平台的运营人员成本&#xff0c;实现了反诈科普平台的标准化、制度化、程序化的管理&#xff0c;有效地防止了反诈科普平台的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够…

AIGC、3D模型、轻量化、格式转换、可视化、数字孪生引擎...

老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 基于 HTML5 和 Web…

微信小程序实现多张照片上传

hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;code袁 &#x1f4a5; 所属专栏&…

Linux 进程通信:命名管道、共享内存

目录 一、命名管道 1、概念 2、特点 3、原理 4、创建 5、匿名管道与命名管道的区别 6、命名管道的打开规则 二、命名管道—实现客户端和服务器之间的通信 1、Makefile 2、comm.hpp 3、Log.hpp 4、server.cxx 5、client.cxx 运行测试&#xff1a; 三、system V…