2011-10-19 13 views
0

Javascriptでカレンダーを作成しています。ユーザーがクリックするリンクに応じてカレンダーを呼び出す方法を知りたいと思います。現在、この関数の名前はfoo()です。別の関数の関数を呼び出す

下部には、状況に応じて表示される3つの異なるdivリンクがあります。 (作業中の)カレンダーはPHPで書かれているので、私はそれをJavascriptに移植しようとしています。それにはうってつけですが、アイロンがけが必要ないくつかのバグがあります。問題は、PHPのカレンダーの動作を模倣してPOSTの値を次のボタンまたは前のボタンに送信して、月などの情報を表示することだけです。

私はカレンダー関数を呼び出したjavascriptのvoid(onclick)リンクを使用して、JavaScriptのカレンダーで2つの異なる方法でこれを試しましたが、明らかにonclickで関数に変数を渡すことはできません。もう1つの方法はdomオブジェクトを使用していましたが、私は新しいジレンマに直面しました。つまり、自分自身の中で関数を呼び出すことはできません。

だから、私は関数を呼び出すと、別の関数を作成し、その中からカレンダーを呼び出す方法はありますか?おかげさまで

はSystemError

例:私は理解していない

function cal() 
    { 

    document.write("<td align='left' colspan=7><div id='calendar'></div></td>"); 
    (function() 
    { 
      var lastday = cal[month]; 
       DOMcalendar = document.getElementById("calendar"), 
       div = document.createElement("div"); 

      div.innerHTML = "<a href='javascript:void(0)'>Next</a>"; 
      div.onclick = function() 
      { 
       cal(lastday); 
      } 
      DOMcalendar.appendChild(div); 
    })() 

    } 

    cal(); 
+0

のようになります。関連するコードを投稿してください。また、「カレンダーにユーザーがクリックするリンクに応じてカレンダーを呼び出す方法」では、実際に何をしようとしているのか説明していません。カレンダーとは何ですか?それ自体を呼び出すことはできますか?呼び出し自体は何を意味しますか? –

+0

a)jqueryなどのlibを使用しなかった理由とb)自由に利用できるカレンダーウィジェットの1つを使用しなかった理由は何ですか? – ThiefMaster

+0

)A)勉強したい(日付/時刻オブジェクトが便利であることを知っている)、B)それをさらにカスタマイズしたい場合は、他人のコードを理解しようとする必要はありません(CSSを追加するのはちょっと簡単です、日付範囲など私はすでにそれがどのように動作するか知っているので)。ああ、C)jQueryは帯域幅を使用しますが(多くはありませんが)、ユーザーがダウンロードしたほうが少ないほどです。 – SystemError

答えて

0

  1. あなたはそうすることができます自体

O_O内の関数を呼び出すことはできません。

  1. あなたはそうすることができますのonclick

O_Oで関数に変数を渡すことはできません。ただ、いっそ

onclick="function(){myFuncWithArgs(arg1, arg2, arg3)}" 

か、の線に沿って、あなたが望むものは何でもパラメータとする関数を呼び出します小さなラムダ関数を定義するだけで、あなたのjavascriptのコードでコールバックを割り当てます。 jQueryの場合は

$("#yourButtonId").click(function(){ 
     // ...do whatever you like, variable called "this" 
     // is the DOM object of a button... 
}) 
+0

OKありがとう、非常に役に立ちます – SystemError

+0

最初のコードブロックは2つの理由で間違っています:コードはevalされているので、関数文に名前が必要です。それを関数式に変換するために '()'を追加してください。これは引き続きargsをクロージャーに入れないので、グローバルにする必要があります。要するに、jQueryベースのソリューションが道のりです。 – ThiefMaster

+0

@ThiefMasterそれは、 "の行に沿って"という意味です。 –

関連する問題