1

私は実際に、HTML5 フォームとカスタム UI インターフェイスの検証更新に関する非常に単純な例を作成しています。動作に関しては結果にかなり近づいていますが、JS コードの細部にこだわっています。

基本的に、すべてのフォームの入力要素に入力イベントを添付しています。コールバック関数は、現在の要素の有効性を確認し、カスタム クラスを適用して要素を「リアルタイム」でスタイル設定するだけです。

私が直面している唯一の問題は、現在の要素をイベント ハンドラーのコールバック関数のパラメーターに渡す必要があることです。このイベントを各入力要素にアタッチする必要があるため、for ループを使用しています。

jslint の警告が表示されます: ループ内で関数を作成しないでください。

これを解決する方法がわかりません(意味は理解しています)。匿名関数を使用せずに要素をパラメーターとしてコールバック関数に渡す方法がわかりません。

したがって、質問は次のとおりです。現在の要素をパラメーターとして外部関数に渡して、jslint 警告を解決する方法。

誰かがそれを処理するより良い方法を手に入れ、それをより効率的なコードに修正できれば、非常に高く評価されます。その例は、後で一部の学生に役立つ可能性があります。

ここにコードペンがあります: http://codepen.io/anon/pen/bGDsB

4

2 に答える 2

0

単に を呼び出す新しい関数を定義するのではなく、に直接check()渡すことができます。checkaddEventListener()

  for (var i=0; i<inputs.length; i++) {
      inputs[i].addEventListener('input', check);
  }

check()次に、これを説明するために少し変更できます。

  function check(e) {
      var elm = e.srcElement;
      ...
  }

これを jsLint に対してテストしたことはありませんが、ループの反復ごとに新しい関数が作成されることはありません。

于 2013-09-12T10:45:22.887 に答える