4
var year= $("input[name=dateAccessed]").datepicker('getDate').getFullYear()

上記のコードは、datepicker で設定された日付を取得し、日付からの年のみを取得して、それを year という名前の変数に保存します。

このコードは、dateAccessed という名前の入力フィールドを jQuery オブジェクトに変換することを理解しました。現在は jQuery オブジェクトになっているため、jQuery メソッドを適用できます。

次に、datepicker を適用します。datepicker はメソッドですか、それともオブジェクトですか? 引数(メソッドにする)とプロパティ(オブジェクトにはプロパティがあります)の両方を受け入れるので、わかりません。オブジェクト+メソッドのようなものはありますか?

('getDate')日付ピッカーが選択した日付を返す引数を受け入れるのはなぜですか? これはどのように作動しますか?

代わりにdatepicker に.getDateメソッドがあればもっといいのではないでしょうか? したがって、 と書くことができますdatepicker().getDate.getFullYear()

4

2 に答える 2

10

日付ピッカー

datepicker関数です。この関数は括弧で呼び出され、('getDate')このパラメータの値がであるため、ネイティブ Javascript で関数を持つ'getDate'Javascript オブジェクトを返します。DategetFullYear

の詳細については、jQuery UI Datepicker ウィジェット ページの getDate セクションを参照してくださいdatepicker

getDate()

Returns: Date
Returns the current date for the datepicker or null if no date has been selected.

    This method does not accept any arguments.

Code examples:

Invoke the getDate method:

var currentDate = $( ".selector" ).datepicker( "getDate" );

Javascript の概念

Javascript で役立つ重要な概念の 1 つは、関数呼び出しと関数参照の違いを理解することです。詳細については、別の JavaScript の回答を参照してください。それを理解すると、「datepicker はメソッドかオブジェクトか」に対して「関数オブジェクトです」と答えなければならない理由がわかります。

Javascript では、関数は、名前の後に一対の括弧を追加することで呼び出すことができる単なる特別なオブジェクトです。そうすると、関数オブジェクト自体ではなく、関数オブジェクトが返すものは何でも、その中にステートメントが含まれていreturn somethingHere;ます。プロトタイプの継承について詳しく読むと役立つ場合があります。

jQuery の概念

jQuery は Javascript の連鎖機能を利用します。ここで関数を呼び出すと、関数はオブジェクトを返します。このオブジェクトに対して、別の関数を何度も呼び出します。もう 1 つの使用パターンは、チェーンの各ステップで変数を宣言し、単一のステップを実行することです。しかし、これは面倒になり、一般に、必要のないところで変数を宣言することを避けることを好みます。チェーンがないようにコードを変換するとしたら、次のようになります。

var dateAccessedInput, selectedDate, year;
dateAccessedInput = $("input[name=dateAccessed]");
selectedDate = dateAccessedInput.datepicker('getDate');
year = selectedDate.getFullYear();

jQuery では、可能であれば jQuery 関数が同じ jQuery オブジェクトを返すのが一般的な方法です。これにより、別のメソッドをチェーンすることができます。連鎖が長くなったときに、それらを別の行に配置して、連鎖が大きな塊にならないようにすることもできます。これは、私のプロジェクトの1つからの実際のjavascript jQueryコードです。

incident
   .wireUp($('div.incidents div.incident'))
   .find('input:data(focus)')
   .first()
   .focus()
   .filter(':data(select)')
   .trigger('select');

これにより、さまざまな機能を連鎖させることができる理由がより明確になることを願っています。

また、価値のあることとして、Javascript には関数があり、はい、それらはメソッドですが、通常はそのようには呼びません。

于 2013-04-02T17:06:36.790 に答える