javascript - 打开出现日历的功能
问题描述
我对 html 尤其是 javascript 很陌生,所以我对这些东西还不是很好。
我一直在尝试为我的朋友制作一个显示交互式出现日历的 html 页面。我希望页面只显示某一天的盒子(所以在 12 号只显示第 12 个盒子)和以前的盒子。
首先,我希望找到一个解决方案来做到这一点,但是由于我从几个小时以来一直在失败,所以我现在可以打开那些......
我现在的问题是,当向下滚动到第二个框时,它会将我带到页面的开头(Firefox),并且我能够打开应该锁定的框。所以我希望有人能帮我解决这个问题,因为这是我给我朋友的圣诞礼物,他从那时起就一直试图教我 html。
我的卡片在 html 中看起来像这样
<div class="calendar">
<div onclick="checkdate(1)">
<div class="scene scene--card">
<div class="card">
<div class="card__face card__face--front i1"></div>
<div class="card__face card__face--back">
<span>Header</span><br><br>Text
</div>
</div>
</div>
</div>
<div onclick="checkdate(2)">
<div class="scene scene--card">
<div class="card">
<div class="card__face card__face--front i2"></div>
<div class="card__face card__face--back">
<span>Header</span><br><br>Text
</div>
</div>
</div>
</div>
</div>
我找到正确框的脚本如下所示
function checkdate(selectday) {
var dateselect = new Date (2020, 10, selectday);
var card = document.querySelector('.card');
var datenow = new Date();
if (datenow > dateselect) {
$('.scene').select(function() {
$(".card", this).toggleClass("is-flipped")});
} else {
alert ("No cheating!");
}
}
抱歉,如果我忘记了什么或做错了什么,这是我的第一篇文章。如果是这样,请告诉我!
编辑 1
这是与日历相关的所有内容的小提琴!
解决方案
您的主要问题来自于此:
加载 HTML/JS 时,您正在告诉一张点击翻转的卡片。因此,无论您在 checkDate 函数中做什么,任何卡片都会翻转。
var card = document.querySelector('.card');
$('.scene').on('click', function() {
$(".card", this).toggleClass("is-flipped");
});
我建议摆脱那部分代码。
现在,您需要从 checkDate 函数中翻转卡片。这是一个与您的代码当前结构最相似的修复:
function checkdate(selectday, card) { // TAKE ANOTHER PARAMETER OF THE CARD CLICKED
var dateselect = new Date (2020, 10, selectday);
// var card = document.querySelector('.card'); THIS VARIABLE WAS NEVER USED SO I COMMENTED IT OUT AND STOLE THE NAME
var datenow = new Date();
if (datenow > dateselect) {
//$('.scene').select(function() { // CAN JUST GET THE CARD FROM THE VARIABLE PASSED IN
$(card).toggleClass("is-flipped"); // USING "card" INSTEAD OF YOUR GLOBAL SELECTOR
//});
} else {
alert ("No cheating!");
}
}
您因为我们现在将卡片翻转作为参数,所以我们需要更改 html:
<div> // I RELOCATED THE ONCLICK FUNCTION TO THE CARD ELEMENT
<div class="scene scene--card">
<div class="card" onclick="checkdate(24, this)"> // HERE IS WHERE THE CLICK WILL BE DETECTED, AND PASSING "this" WILL PASS THE CARD HTML ELEMENT INTO THE JS FUNCTION
<div class="card__face card__face--front i24"></div>
<div class="card__face card__face--back"><span style="font-size: 1.5em; text-decoration: underline">Header</span><br><br>Text here</div>
</div>
</div>
</div>
您需要对所有卡片进行 HTML 更改。
有很多方法可以翻转卡片,但我认为这个解决方案与你已经拥有的最相似。
同样,我们不再告诉卡片在被点击时翻转,而是告诉卡片在可接受的日期范围内翻转。
推荐阅读
- php - 使用 PHP - SQLSTATE [42000] 创建数据库表:语法错误或访问冲突:1064
- java - 从特定列excel apache poi启动表
- reactjs - 连接 API 时出现 REACT、NODE、EXPRESS 错误
- batch-file - taskkill 关闭窗口和 for 循环过早结束
- python - Django - 使用用户输入的 id 更新模型
- android - TextWatcher 仅监视当前输入
- amazon-web-services - 一个 AWS 账户中的 Elastic Beanstalk 能否与另一个 AWS 账户中的 RDS 通信?
- php - 如何在没有 laravel 语法的 Laravel 控制器中使用 php 扩展
- c# - 如何通过将不同的参数传递给构造函数来允许实例化不同的单例类
- ios - 支持 CocoaPod 和 Carthage