1 回答

TA贡献1811条经验 获得超5个赞
您的主要问题来自于此:
加载 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 更改。
翻牌的方法有很多,但我认为这个解决方案与您已有的解决方案最相似。
同样,我们不再告诉卡片在单击时翻转,而是告诉卡片在可接受的日期范围内翻转。
添加回答
举报