1

私は自分のJSをブラッシュアップしていますが、これを正確に尋ねる方法がわかりません。

私はこれを持っています:

text_area.onkeyup = function() {
  var text_length    = this.value.length;
  var text_remaining = text_max - text_length;

  feed_back.innerHTML = "<strong>" + text_remaining + "</strong> charactres remaining";
} 

できます。ただし、関数を取得して、このようなものに引き出すことができるはずですか?

function countDown() {
  var text_length    = this.value.length;
  var text_remaining = text_max - text_length;

  feed_back.innerHTML = "<strong>" + text_remaining + "</strong> charactres remaining";
}

その名前で関数を呼び出すだけですか?

text_area.onkeyup = countDown();

これは、複数のプロジェクトにわたって、私にとってはうまくいきませんでした。

それはすべきですか?なぜそうしないのですか?

4

4 に答える 4

4

以下を使用する必要があります。

text_area.onkeyup = countDown;

括弧なし。

countDown実際の関数オブジェクトへの参照countDownです。これは単なる参照であり、関数は呼び出されたり実行されたりしません。

countDown()実際に関数を呼び出し、それが返すものを評価します。

于 2013-03-27T22:20:08.083 に答える
3

()実際に関数を呼び出すため、機能しません。関数自体ではなくtext_area.onkeyup、戻り値に効果的に設定されます。countDown

代わりにこれを試してください:

text_area.onkeyup = countDown;
于 2013-03-27T22:19:59.220 に答える
2

問題は、割り当て中に関数を実行しているため、関数からの戻り値がイベントに関連付けられることです。代わりに、参照を添付する必要があります。

text_area.onkeyup = countDown

または、 countdown に渡したいパラメーターがある場合は、 afunctionを使用してそれらが失われないようにすることができます。このようなもの:

text_area.onkeyup = function(){ countDown(paremeter1, paremeter2); }
于 2013-03-27T22:21:15.037 に答える
2

関数参照の代わりに関数呼び出しの結果を割り当てているため、そうすべきではありません。次のようにする必要があります。

text_area.onkeyup = countDown;
于 2013-03-27T22:19:58.110 に答える