javascript - 在变量中的javascript中添加弹出窗口
问题描述
有一个脚本,其中每个插槽都有一个唯一的单词。这些都在同一个变量(单词)中。我的困境是,当我单击单词观看电影时,我必须弹出一个弹出窗口,不同的电影对应不同的单词。是否可以将其添加到变量中以及如何添加?
https://jsfiddle.net/ajo81t2y/
$(document).ready(function() {
var words = ["tomte","ipsum ", "delor", "sit", "amet", "consect", "adipisci", "elit,", "sed.", "Eiusmod", "tempor", "a", "enim", "minim", "season", "nulla", "dolore", "sint", "id", "est", "laboris", "ut.", "aute", "laborum", "toe"];
var message = "";
var date = new Date();
var day = date.getDate();
var month = date.getMonth() + 1;
var scrolled = false;
var timeDelay = 200;
// function to reveal message
var cardReveal = function() {
$("#message").text(message).show();
}
//day=25; // uncomment to skip to 25
// Only work in December
if (month === 12) {
// Loop through each calendar window
$("li").each(function(index) {
var adventwindow = index + 1;
var item = $(this);
// Open past windows
if (day !== adventwindow && adventwindow < day) {
window.setTimeout(function() {
item.children(".door").addClass("open");
}, timeDelay);
}
// timeout offset for past window opening animation
timeDelay += 100;
// Add words so far to message variable
if (adventwindow <= day) {
var word = words[index];
$(this).append('<div class="revealed">' + word + '</div>');
message = message + " " + word;
}
// Add jiggle animation to current day window
if (adventwindow === day) {
$(this).addClass("current");
$(this).addClass("jiggle");
}
// On clicking a window, toggle it open/closed and
// handle other things such as removing jiggle and 25th
$(this).on("click", function() {
if (adventwindow <= day) {
$(this).children(".door").toggleClass("open");
}
$(this).removeClass("jiggle");
// If 25th, can show the message
if (day >= 25 && adventwindow === 25) {
messageReveal();
// Animate scroll to message if not already done
if (!scrolled) {
$('html, body').animate({
scrollTop: $("#message").offset().top
}, 2000);
scrolled = true;
}
}
});
});
// If beyond 24, show message
if (day >= 26) {
messageReveal();
}
}
});
@import url(https://fonts.googleapis.com/css?family=Oleo+Script);
body {
background: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/62105/xmas.jpg");
color: #fff;
font-family: 'Oleo Script', cursive;
padding: 20px;
font-weight: 400;
}
h1 {
margin: 0;
font-size: 75px;
line-height: 75px;
text-align: center;
font-weight: 400;
}
ul {
margin: 0 auto 30px auto;
padding: 0;
list-style-type: none;
max-width: 900px;
width: 100%;
text-align: center;
user-select: none;
}
li {
font-weight: 400;
background-color: #fff;
box-sizing: border-box;
border-radius: 6px;
display: inline-block;
color: #111;
cursor: pointer;
font-size: 26px;
padding: 15px;
margin: 25px 12px;
width: 130px;
height: 130px;
line-height: 100px;
text-align: center;
position: relative;
vertical-align: top;
user-select: none;
perspective: 800px;
transition: all 0.4s ease-in-out;
}
ul li:last-child {
background: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/62105/santa.jpg") center top;
background-size: cover;
display: block;
clear: both;
margin: 20px auto 0 auto;
width: 200px;
height: 275px;
}
ul li:last-child .door {
font-size: 100px;
width: 200px;
height: 275px;
line-height: 240px;
}
ul li:last-child .revealed {
line-height: 123px;
}
.door {
user-select: none;
color: #fff;
font-size: 70px;
position: absolute;
top: 0;
left: 0;
background-color: #91c1cc;
box-sizing: border-box;
border-top: 2px #eee dashed;
border-right: 2px #eee dashed;
border-bottom: 2px #eee dashed;
border-left: 1px #eee solid;
border-radius: 6px;
padding: 15px;
width: 130px;
height: 130px;
transform-origin: 0 40%;
transition: all 0.4s ease-in-out;
transform-style: preserve-3d;
}
.current .door {
background-color: #7EAD44;
}
.current .door.open {
color: #7EAD44;
}
.revealed {
user-select: none;
}
#message {
box-sizing: border-box;
color: #222;
display: none;
font-size: 24px;
padding: 20px;
background: #eddecb;
max-width: 500px;
width: 100%;
border-radius: 15px;
margin: 0 auto;
}
.open {
box-shadow: 14px 0px 15px -1px rgba(0, 0, 0, 0.2);
color: #91c1cc;
transform: rotate3d(0, 1, 0, -98deg);
}
.jiggle {
animation: jiggle 0.2s infinite;
transform: rotate(-1deg);
}
@keyframes jiggle {
0% {
transform: rotate(-1deg);
}
50% {
transform: rotate(1deg);
}
}
@media screen and (min-width: 480px) {
li {
margin: 25px 20px;
}
}
@media screen and (min-width: 768px) {
body {
background-size: 150px;
}
p {
right: 6%;
top: 20%;
bottom: auto;
margin-left: auto;
left: auto;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<h1>Merry Christmas</h1>
<ul>
<li>
<div class="door">1</div>
</li>
<li>
<div class="door">2</div>
</li>
<li>
<div class="door">3</div>
</li>
<li>
<div class="door">4</div>
</li>
<li>
<div class="door">5</div>
</li>
<li>
<div class="door">6</div>
</li>
<li>
<div class="door">7</div>
</li>
<li>
<div class="door">8</div>
</li>
<li>
<div class="door">9</div>
</li>
<li>
<div class="door">10</div>
</li>
<li>
<div class="door">11</div>
</li>
<li>
<div class="door">12</div>
</li>
<li>
<div class="door">13</div>
</li>
<li>
<div class="door">14</div>
</li>
<li>
<div class="door">15</div>
</li>
<li>
<div class="door">16</div>
</li>
<li>
<div class="door">17</div>
</li>
<li>
<div class="door">18</div>
</li>
<li>
<div class="door">19</div>
</li>
<li>
<div class="door">20</div>
</li>
<li>
<div class="door">21</div>
</li>
<li>
<div class="door">22</div>
</li>
<li>
<div class="door">23</div>
</li>
<li>
<div class="door">24</div>
</li>
</ul>
<p id="message"></p>
解决方案
https://jsfiddle.net/mplungjan/3ycxume5/
$(this).on("click", function() {
if(adventwindow <= day) {
$(this).children(".door").toggleClass("open");
const word = $(this).find(".revealed").text();
// console.log("opening",word,urls[word])
window.open(urls[word]);
}
你在哪里
urls = { "tomte":"https://www.site1.com/", "ipsum":"https://www.site2.com/" ... }
推荐阅读
- javascript - 未捕获的referenceError:未定义的变量,即使我将其设置为全局
- angular - 使用带角度的蚂蚁设计组件
- ios - iOS 13 暗模式:traitCollectionDidChange 仅在第一次调用
- angular - Angular 6:没有出现
- java - 在 lombok 之后未调用覆盖 Setter 方法
- python - 如果我在非常小的训练数据集上不能得到 0 错误,这意味着什么?
- sql - 如何对 BigQuery SQL 中重复的不同列进行求和
- google-ads-api - 如何在 codigniter 中实现 google adsense
- node.js - Mongoose:计算 $lookup 聚合步骤返回的数组中不同字段值的数量
- hadoop - 如何在动态 hdfs 目录上创建分区 hive 表