javascript - 如何根据文本值显示不同的图标
问题描述
我正在使用 jQuery.countdown 在同一页面上显示多个到期日期的多个实例,并将其设置为显示剩余天数(例如“45 天”)。我已经设计了它,所以默认情况下有一个“icon-conditional-rule-pass.png”的关联背景图像。
如果显示 00 天,我有更改为 icon-conditional-rule-fail.png 的代码,这工作正常,但我苦苦挣扎的地方是我想创建一个显示警告图标的时间段,让我们说 1- 60 天,我显然需要“60 天”、“59 天”等,这很好,我只是不知道如何(或者如果可能的话)操纵代码以处理多个值。我假设这可以做到吗?
我已经尝试以各种方式修改/操作我的代码,但每当我测试时,它似乎只适用于第一个文本值而忽略其余部分。搜索网络不会产生我想要实现的结果。
$(".countdown").filter(function() {
return $(this).text() === "00 Days";
}).css("background-image", "url(/assets/icon-conditional-rule-fail.png)");
想要一个我可以插入多个值并让它返回所需的警告图像的脚本。我确实想创建多个脚本(例如,1 个用于在到期前 30 天显示警告,1 个用于 60 天等,但我假设我只需要将 .countdown 字段更改为其他内容。
解决方案
就个人而言,我将其分为四个步骤:
- 创建一个 的数组
ranges
,其中包括个数days
和相关联的icon
- 对于 each
.countdown
,将“Days”的数量解析为一个数字 - 使用该数字,从步骤 1 中找到相应的范围
- 使用该范围的图标
这不仅为您提供了一种简洁且可重用的方法,而且还允许您通过简单地编辑ranges
数组来轻松更新范围和/或图标。
const ranges = [
{
days: 60, //60+ days
icon: "icon-for-60plus-days.png"
},
{
days: 30, //30-59 days
icon: "icon-for-30plus-days.png"
},
{
days: 1, //1-29 days
icon: "icon-for-1plus-days.png"
},
{
days: 0, //0 days
icon: "icon-conditional-rule-fail.png"
}
];
$(".countdown").css("background-image", function() { //For each .countdown
const daysAsInt = Number($(this).text().replace(" Days", "")); //Get the days as an integer
const range = ranges.find(i => daysAsInt >= i.days); //Find the range in the array
return range && `url(/assets/${range.icon})`; //Set the background-image to the corresponding icon
});
//FOR DEMO PURPOSES ONLY
$(".countdown").each(function() { console.log($(this).text(),": ", $(this).css("background-image")); });
span { display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="countdown">70 Days</span>
<span class="countdown">40 Days</span>
<span class="countdown">05 Days</span>
<span class="countdown">00 Days</span>
推荐阅读
- image - 使用 DCT 的 JPEG 压缩
- java - 如何在 Mac 上修复 IntelliJ IDEA 包名称
- javascript - 将 Java OffsetDateTime 解析为 JS 日期
- python - 来自 Pandas Dataframe 的堆积条形图
- java - 我可以使用单个数组来填充创建多维数组吗?
- r - 从 R 中数据框的所有行中删除 URL 或任何重复出现的短语
- excel - 创建一个数据透视图,将个人得分与其团队平均得分进行比较
- python - 当需要 long/bigints 时强制 python 失败
- python-2.7 - 使用 OpenCV Python 进行多幅图像比较
- vba - 从 Access 填充 Word 字段的 VBA 代码仅每隔一次触发一次