У меня есть код для календаря javascript, и он отлично работает, поскольку создает его при загрузке страницы. Однако мне было интересно, возможно ли добавить к нему события. Я нашел плагин (jQuery), который позволяет пользователю наводить курсор на тд с классом «событие», и событие будет отображаться. Так как этот календарь будет использоваться не мной, а кем-то еще, кто ничего не знает о разработке, мне было интересно, есть ли способ сделать php-файл или загрузить или что-то еще, чтобы она могла загрузить событие. Я имею в виду, допустим, что она хочет событие 3-го числа, затем она загружает файл, который php читает, и сообщает javascript добавить класс «событие» в эту дату, а jQuery сделает все остальное. Является ли это возможным? Я даже не могу понять, как это сделать, и я очень надеюсь, что объяснил сам. Вот мой javascript, кстати.
function buildCal(){
var d = new Date();
var month = d.getMonth()+1;
var year = d.getFullYear();
var monthName=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
var daysInMonth=[31,0,31,30,31,30,31,31,30,31,30,31];
var objectDay = new Date(year, month-1, 1); //fix date bug when current day is 31st
objectDay.od=objectDay.getDay()+1; //fix date bug when current day is 31st
var todaydate=new Date()
var scanfortoday=(year==todaydate.getFullYear() && month==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
daysInMonth[1]=(((objectDay.getFullYear()%100!=0)&&(objectDay.getFullYear()%4==0))||(objectDay.getFullYear()%400==0))?29:28;
var t='<div class="main"><table class="main" cols="7" cellpadding="0" border="0" cellspacing="0">';
t+='<h3 class="monthCSS" align="center">'+monthName[month-1]+' - '+year+'</h3><tr align="center">';
for(s=0;s<7;s++)t+='<td class="daysofweek">'+"DoLuMaMiJuViSa".substr(s*2,2)+'</td>';
t+='</tr><tr align="center">';
for(i=2;i<=42;i++){
var x=((i-objectDay.od>=0)&&(i-objectDay.od<daysInMonth[month-1]))? i-objectDay.od+1 : ' ';
if (x==scanfortoday)
x='<td class="today">'+x+'</td>'
t+='<td class="days">'+x+'</td>';
if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
}
return t+='</tr></table></div>';
}
Что-то еще, как вы можете видеть здесь, добавляет пробелы, пока не достигнет фактической даты. Я пытался заставить его проверить, если (x не было числом), затем добавить td class = "padding", однако, чтобы сделать это, я пытался использовать x.match (/ [0-9] + /), но это не Кажется, что это работает, и это будет первый раз, когда я попытаюсь использовать регулярные выражения с javascript, кто-нибудь знает, почему это неправильно? или как на самом деле проверить это?
Редактировать
Что-то странное происходит с этим скриптом, и я не знаю почему, я пытался изменить с
t+='<td class="days">'+x+'</td>';
до
t+='<td class="days' + x +'">'+x+'</td>';
это, так что я могу выбрать каждый тд, но когда я делаю это, генерируется новый тд, который содержит
<td id="days<td class=" today="">1</td>
Я понятия не имею, почему это происходит, я просто знаю, что это портит код, потому что потом я получаю "> напечатанное (из-за несоответствия кавычек, вызванного этим новым тд ... почему это происходит?