У меня есть приложение календаря прихода, настроенное таким образом, когда вы нажимаете на дверь, он выбирает случайное изображение. Я хочу обернуть это в функцию getDate, чтобы вы могли только "открыть" эту дверь в определенную дату. Я не знаю, с чего начать, любая помощь будет оценена - я довольно новичок в JS
Ссылка: http://p3.katecooperuk.com
Мой HTML:
<div id='calendar'>
<div class='doors' id='dec1'>1</div>
<div class='doors' id='dec2'>2</div>
<div class='doors' id='dec3'>3</div>
<div class='doors' id='dec4'>4</div>
<!-- etc... --!>
<div class='doors' id='dec24'>24</div>
</div
Мой JS:
Настройте Splice для выбора случайного изображения и убедитесь, что он используется только один раз
function getRandomImage(arr) {
if (arr.length > 0) {
random = Math.floor(Math.random()*arr.length)
return arr.splice(random, 1)[0];
}
}
Дата установки
var today = new Date()
var day = today.getDate()
console.log(today);
Дверь открыта - выберите Случайное фоновое изображение из массива
$('.doors').click(function () {
if (today.getMonth() !== 11) {
return;
}
if ($(this).attr('id') <= 'dec' + day) {
// Select Random Image
var doorImage = getRandomImage(calendarImg);
// Change background image of door that was clicked
$(this).css('background-image', doorImage);
return;
}
// Show image telling user to come back
$(this).css('background-image', 'url(/images/come_back.png)');
});
Простейшим решением было бы привязать обработчик onclick только к "двери" дня вместо всех "дверей". У вас есть текущая дата и хороший id
для "дверей" уже, просто используйте их вот так:
$('#dec' + day).click(function(){...});
РЕДАКТИРОВАТЬ
Похоже, вы изменили свой код в сообщении. Если вы хотите сообщить пользователю о нажатии на неправильную дверь, код, указанный выше, не может быть использован. Сделайте что-то вроде этого:
$('.doors').click(function () {
if (today.getMonth() !== 11) {
return;
}
if ($(this).attr('id') !== 'dec' + day) {
$(this).css('background-image', 'url(/images/come_back.jpg)');
return;
}
// show the image
});
day
? т.е.Dec 05
вы хотите разрешить пользователямdec5
только дверьdec5