2

私はこのコードを持っています。テキスト ボックスから値を読み取っています。

エラーが発生しています:

Uncaught TypeError: 未定義のメソッド 'toLowerCase' を呼び出せません

このコードで:

            var total = 0;
            $.each('.reg-input', function () {
                if ($(this).val() == '') {
                }
                else {
                    total += parseInt($(this).val());  //this line throwing error
                }                    
            });
            if (total == 0) {
                $('.RegisterContainer').hide();                    
            }
4

4 に答える 4

7

'.reg-input'は文字列ですthis。その場合、dom 要素ではなく文字列になります。代わりにこれを試してください:

$('.reg-input').each(function(){...
于 2012-09-26T19:34:57.460 に答える
4

奇妙なエラーが発生する理由$.eachは、コレクションではなく文字列を使用して呼び出しているためです。

文字列はオブジェクトであるため、それでもコレクションですが、コレクション内のアイテムは文字列クラスのプロパティとメソッドです(そしてtoLowerCaseそれらの1つです)。

セレクターで見つけた要素をループするには、メソッドの代わりにeachメソッドを使用します。$.each

$('.reg-input').each(function(){
  ..
});

これthisで、ループ内に文字列クラスのメンバーではなく要素が含まれるため、を使用$(this).val()して値を取得できます。

于 2012-09-26T19:39:04.040 に答える
1

私はまったく同じ問題を抱えていました。変数に代入$(this).val()してから変数を整数に解析することで解決しました。したがって、正しい回避策は次のようになります。

var total = 0;
        $.each('.reg-input', function () {
            if ($(this).val() == '') {
            }
            else {
                $this_val = $(this).val();
                total += parseInt($this_val);  //this line throwing error
            }                    
        });
        if (total == 0) {
            $('.RegisterContainer').hide();                    
        }
于 2014-03-25T22:18:54.647 に答える
-1

if ($(this).val() == "") 値が未定義の文字列 "" であるかどうかを確認します。
このような typeof 演算子を使用できます if(typeof $(this).val() == 'undefined')

于 2012-09-26T19:37:45.943 に答える