|
|
|
| Приветик, всем))
Подскажите, пожалуйста, вот есть календарик. И там надо отметить специальные даты только в определенном году, а он(JS) во всех годах это делает((, уже голову поломала как придумать, чтобы выделялся год 2008 только. Помогите
<script type="text/javascript">
var SPECIAL_DAYS = {
0 : [ 13, 24 ], // special days in January
2 : [ 1, 6, 8, 12, 18 ], // special days in March
8 : [ 21, 11 ] // special days in September
};
function dateIsSpecial(year, month, day) {
var m = SPECIAL_DAYS[month];
if (!m) return false;
for (var i in m) if (m[i] == day) return true;
return false;
};
|
| |
|
|
|
|
|
|
|
для: Лапатулька
(05.10.2008 в 11:06)
| |
<script type="text/javascript">
var SPECIAL_DAYS = new Array();
SPECIAL_DAYS[0] = new Array(13, 24); // special days in January
SPECIAL_DAYS[2] = new Array(1, 6, 8, 12, 18); // special days in March
SPECIAL_DAYS[8] = new Array(21, 11); // special days in September
function dateIsSpecial(month, day) {
//если надо узнать есть ли такая дата в массиве,
//то получаем по номеру месяца соответствующие даты
function dateIsSpecial(month, day) {
if (SPECIAL_DAYS[month]) {
//если есть такой месяц,
//берем массив как строку
var s = SPECIAL_DAYS[month].toString();
//есть ли текущее число в строке
if (s.indexOf(day) > -1) alert("YES"); else alert("NO");
} else alert("No special"); //такого месяца нет
}
}
</script>
<input type="button" value="GET DAY" onclick="dateIsSpecial(8, 21)">
|
PS. Другими словами, можно держать специальные даты как строки в массиве, затем получать по индексу равному номеру месяца строку и искать в ней искомую дату, а преобразование массива в строку удалить из функции. | |
|
|
|
|
|
|
|
для: sim5
(05.10.2008 в 11:57)
| | ...извените, но я что-то не смогла, то что Вы написали внедрить в
<script type="text/javascript">
var SPECIAL_DAYS = {
0 : [ 13, 24 ], // special days in January
2 : [ 1, 6, 8, 12, 18 ], // special days in March
8 : [ 21, 11 ] // special days in September
};
function dateIsSpecial(year, month, day) {
var m = SPECIAL_DAYS[month];
if (!m) return false;
for (var i in m) if (m[i] == day) return true;
return false;
};
function dateChanged(calendar) {
// Beware that this function is called even if the end-user only
// changed the month/year. In order to determine if a date was
// clicked you can use the dateClicked property of the calendar:
if (calendar.dateClicked) {
// OK, a date was clicked, redirect to /yyyy/mm/dd/index.php
var y = calendar.date.getFullYear();
var m = calendar.date.getMonth(); // integer, 0..11
var d = calendar.date.getDate(); // integer, 1..31
// redirect...
if (dateIsSpecial(y, m, d))
window.location = "?y=" + y + "&m=" + m + "&d=" + d + "";
}
};
function ourDateStatusFunc(date, y, m, d) {
if (dateIsSpecial(y, m, d))
return "special";
else
return false; // other dates are enabled
// return true if you want to disable other dates
};
Calendar.setup(
{
flat : "calendar-container", // ID of the parent element
flatCallback : dateChanged, // our callback function
dateStatusFunc : ourDateStatusFunc
}
);
</script>
| ...так чтобы это работало..(((, если Вас не затруднит, то помогите, пожалуйста... | |
|
|
|
|
|
|
|
для: Лапатулька
(05.10.2008 в 12:15)
| |
//задайте массив специальных дат как строки в массиве
//индесками которого, служат номера месяцев
var SPECIAL_DAYS = new Array();
SPECIAL_DAYS[0] = "13 24"; // special days in January
SPECIAL_DAYS[2] = "1 6 8 12 18"; // special days in March
SPECIAL_DAYS[8] = "21 11"; // special days in September
//эта функция выдает, есть ли в массиве специальная дата в текущем месяце
function dateIsSpecial(month, day) {
if (SPECIAL_DAYS[month]) {
if (SPECIAL_DAYS[month].indexOf(day) > -1) return true; else return false;
} else return false;
}
|
Что касается вашего дальнейшего кода, то чтобы работать с датой, нужно создать объект Date, а уже потом работать с ним (это в функции dateChanged(calendar)). То есть нужно сперва так:
var calendar = new Date();
а уже потом
var m = calendar.getMonth();
Но у вас используется и calendar и зарезервированное слово date, что есть не хорошо.
Зачем передается год в функции тоже не понятно, так как сам массив не содержит и намека на год. В общем, лучше объясните "на пальцах", чего вы хотите, а то дальнейший участок кода не понятен, кроме как самих вызовов. | |
|
|
|
|