
在web开发中,实现动态内容展示是常见的需求。本教程将以一个随机名言生成器为例,演示如何将其核心逻辑扩展,以创建一个随机图书封面推荐器。核心挑战在于将原先展示文本内容的方式,转换为展示图片,并在此基础上增加避免连续重复推荐的优化机制,以提升用户体验。
要实现随机图书封面推荐器,我们需要HTML来构建页面结构和图片占位符,以及J*aScript来处理随机选择逻辑和动态更新图片源。
我们将基于一个简单的名言生成器进行改造。
首先,我们需要调整HTML部分。将原有的文本显示区域div中的id="quoteDisplay"保留,但其内部不再直接显示文本,而是放置一个带有id="bookCover"的标签。这个
标签将作为我们动态更新图书封面的目标。
<div class="quotes">
<h1 class="quote-generator">简单图书推荐器</h1>
<div id="quoteDisplay">
<!-- 图片将在此处显示 -->
@@##@@
</div>
<button onclick="newBook()" class="button-quote">推荐新书</button>
<script src="./js/books.js"></script>
</div>关键改动点:
YouMind
AI内容创作和信息整理平台
207
查看详情
接下来,是J*aScript部分的核心改造。我们需要将存储名言的数组替换为存储图片URL的数组,并修改newQuote函数为newBook函数,以适应图片显示的需求,并增加防重复逻辑。
// 定义一个包含图书封面图片URL的数组
var images = [
'https://m.media-amazon.com/images/I/81jRqrKKObL._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/81JgX8VgZiL._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/71CBWHK035L._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/91pXKpUfGgL._AC_UL800_FMwebp_QL65_.jpg',
// 您可以在此处添加更多图书封面的URL
];
// 用于存储上一次显示的图书索引,初始化为-1表示没有上次记录
let lastBook = -1;
/**
* 随机选择并显示一本新书封面。
* 确保新选择的图书与上一次显示的图书不同。
*/
function newBook() {
let randomNumber;
// 使用do...while循环确保新生成的随机数与lastBook不同
do {
randomNumber = Math.floor(Math.random() * images.length);
} while (randomNumber === lastBook);
// 更新lastBook为当前选择的图书索引
lastBook = randomNumber;
// 通过ID获取@@##@@元素,并更新其src属性为新的图片URL
document.getElementById('bookCover').src = images[randomNumber];
}
// 页面加载完成后,可以自动显示第一本书(可选)
document.addEventListener('DOMContentLoaded', newBook);关键改动点:
为了方便您快速部署和测试,以下是HTML和J*aScript的完整结合示例。
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>随机图书推荐器</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f4f4f4;
margin: 0;
}
.quotes {
background-color: #fff;
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
text-align: center;
}
.quote-generator {
color: #333;
margin-bottom: 20px;
}
#quoteDisplay {
min-height: 150px; /* 为图片预留空间 */
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 25px;
}
#bookCover {
max-width: 150px; /* 控制图片最大宽度 */
height: auto; /* 保持图片比例 */
border: 1px solid #ddd;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.button-quote {
background-color: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s ease;
}
.button-quote:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="quotes">
<h1 class="quote-generator">简单图书推荐器</h1>
<div id="quoteDisplay">
@@##@@
</div>
<button onclick="newBook()" class="button-quote">推荐新书</button>
<script src="./js/books.js"></script>
</div>
</body>
</html>js/books.js
var images = [
'https://m.media-amazon.com/images/I/81jRqrKKObL._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/81JgX8VgZiL._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/71CBWHK035L._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/91pXKpUfGgL._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/8144Vp27-7L._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/71aQ1Wz2-eL._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/71tQo183NfL._AC_UL800_FMwebp_QL65_.jpg',
'https://m.media-amazon.com/images/I/81bY8zV0WXL._AC_UL800_FMwebp_QL65_.jpg',
];
let lastBook = -1;
function newBook() {
let randomNumber;
do {
randomNumber = Math.floor(Math.random() * images.length);
} while (randomNumber === lastBook);
lastBook = randomNumber;
document.getElementById('bookCover').src = images[randomNumber];
}
document.addEventListener('DOMContentLoaded', newBook);请确保将js/books.js文件放置在与index.html同级的js文件夹中,或者根据您的文件结构调整路径。
#bookCover {
max-width: 150px; /* 最大宽度 */
height: auto; /* 保持图片比例 */
display: block; /* 避免底部留白 */
margin: 0 auto; /* 居中显示 */
border: 1px solid #eee;
box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
}@@##@@
通过本教程,我们成功地将一个简单的文本生成器改造为功能更强大的随机图书封面推荐器。核心在于理解HTML中标签的使用,以及J*aScript中数组操作、随机数生成和DOM元素src属性的动态更新。特别是通过引入lastBook变量和do...while循环,我们实现了一个简单而有效的防重复推荐机制,提升了用户体验。这个基础模式可以应用于各种需要随机展示图片或内容的场景。
以上就是构建随机图书封面推荐器:从文本到图像的J*aScript实践的详细内容,更多请关注其它相关文章!
# 创建一个
# 盐城高端网站建设方案
# 网站页面的优化有哪些
# 恩施网站设计建设
# 淘宝的网站优化靠的住吗
# seo流量获客
# SEO导航软件画画
# 建材行业营销推广
# 微信里的seo
# seo教程seo基础
# 重庆市网站推广哪里专业
# 完成后
# 组中
# 输入框
# css
# 一本
# 您可以
# 本书
# 您的
# 随机数
# 加载
# cdn
# 懒加载
# json
# js
# html
# java
# javascript
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
WooCommerce购物车:强制显示所有交叉销售商品教程
在PHP环境中正确加载HTML资源:CSS样式与图片路径指南
房产|直播|视频号怎么认证开通?|直播|需要什么资质?
vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足
感染了幽门螺杆菌一定会导致胃癌吗?蚂蚁庄园今日答案最新11.30
AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案
京东快递物流信息不更新怎么办_物流停滞原因与处理方法
@Team是什么?揭秘团队含义
163邮箱网页版入口 163邮箱在线使用
解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用
Python测试中模块导入路径解析的最佳实践
FullCalendar自定义按钮样式定制指南
如何高效地基于键列值映射DataFrame中的多个列
Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】
Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解
阿里云共享相册入口在哪
荣耀Magic6 Pro拍照成像偏暗_荣耀Magic6 Pro夜景优化
使用jQuery精确检测除指定元素外任意位置的点击事件
怎么恢复删除的电脑文件_数据恢复软件使用教程
51漫画网实时入口 51漫画网页版官方免费漫画入口
重返未来:1999卡戎全方位攻略
抖音团长模式怎么做?团长模式是什么意思?
iPhone14开启Apple TV遥控设置
三星A55应用闪退排查步骤_Samsung A55稳定性优化技巧
泰拉瑞亚水晶无法放置问题
如何用mysql开发用户注册登录功能_mysql用户注册登录数据库设计
惠普电脑BIOS界面看不懂怎么办_HP电脑BIOS功能选项解读与设置
J*aScript与HTML元素交互:图片点击事件与链接处理教程
Highcharts雷达图径向轴数值标签实现教程
抖音官网入口快速访问 抖音网页版账号注册解析
5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备
汽水音乐网页端访问 汽水音乐官方网页直达
电脑开不了机怎么办 电脑无法开机的解决方法
Mac hosts文件在哪里_Mac修改hosts文件详细教程
冬季去寒冷地区旅游,以下哪种做法有助于缓解冻伤
win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】
《edge浏览器》关闭翻译功能方法
创建快捷方式启动系统保护
Excel如何制作月度销售统计图_Excel动态图表制作与控件应用
被称为海蜈蚣的海洋动物是
sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码
顺丰快递在线查询系统 顺丰快递官方查单入口
优化Google Charts Gauge:在数据库无数据时显示默认值
微信客户端如何找回密码_微信客户端忘记密码找回方法
获取WooCommerce产品在后台编辑页面的分类ID
海外搜索引擎推广效果怎么样,怎么分析效果!
在J*a中如何实现类的继承与方法重用_OOP继承方法重用技巧分享
PHP使用DOMDocument与XPath精准追加XML元素教程
Google Cloud Functions 时区处理指南:理解与最佳实践
12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案
2025-10-03
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。