0

JavaScriptカレンダーのコードがあり、ページが読み込まれたときに作成されるため、完全に機能します。ただし、イベントを追加できるかどうかは疑問でした。ユーザーがクラス「イベント」の td にカーソルを合わせると、イベントが表示されるようにするプラグイン (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 : '&nbsp;';
            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>';
}

ここでわかるように、実際の日付になるまで空白を追加します。if(x is not a number) をチェックしてから td class="padding" を追加しようとしましたが、これを行うために x.match(/[0-9]+/) を使用しようとしましたが、そうではありませんでした '動作しているように見えますし、javascript で正規表現を使用しようとするのも初めてです。なぜそれが間違っているのか誰にもわかりませんか? または実際にそれを確認する方法は?


編集

このスクリプトで何か奇妙なことが起こっています。理由はわかりません。変更しようとしました

t+='<td class="days">'+x+'</td>';

t+='<td class="days' + x +'">'+x+'</td>';

これで、各 td を選択できましたが、これを行うと、次を含む新しい td が生成されます

<td id="days&lt;td class=" today="">1</td>

なぜこれが起こるのかわかりません。後で "> が出力されるため、コードをいじっていることはわかっています(この新しい td によって引用符が一致しないためです...なぜこれが起こっているのですか?

4

2 に答える 2

0

イベント データをサーバーからカレンダーを含む Web ページにプッシュしたいようです。これは可能ですが、困難であり、一般に努力する価値はありません。カレンダーに AJAX を組み込み、5 分または 10 分ごとにイベントの更新をサーバーにポーリングする方がよいでしょう。これにより、新しいイベントがアップロードされてからカレンダーに表示されるまでに多少の遅延が発生しますが、開発ははるかに簡単になります.

于 2009-04-01T23:37:23.360 に答える
0

私が作成したカレンダー システムは、月の完全な php 配列を使用します。それを繰り返すことができるように、対応するすべての空白の日のテーブルセルに対して、その日の空白の配列があります。

例えば

$calendar_dates = array(
              [week_1] = array(
                     [sun] = Null
                     [mon] = NULL
                     [tue] = array(
                            [events] = array(
                                    event_id => 'event name'
                                    event_name => ''
                                    event_time => ''
                             )
                     [wed]
                     ...
                 )
              [week_1] => array()
              ...........
  )

指定された日付と現在の週から配列を作成するだけで、日の配列を作成します

次に、データベースにアクセスして、その範囲のイベントを取得します

次に、イベントを循環し、それらをカレンダー配列に添付します。

魅力のように機能します。

JavaScript で動作させるには、カレンダーの開始と終了を制御する html ファイルの先頭にある特定の JavaScript をエコーするだけです。

Web フォームでイベントを入力/編集するためのシンプルなログイン ページをクライアントに提供します。

于 2009-04-01T21:41:17.647 に答える