1

何らかの理由でIE8とIE7でこのエラーが発生します。オブジェクト内のすべてのキーをループしていますが、次のように表示され続けますObject doesn't support this property or method

var inVal = $(inType + "#" + inName).val().trim();

ブロック全体は以下のとおりです。

for (var key in inputs) { // find all keys "brand", "name", etc. in our inputs object
        var errors = false;

        if (inputs.hasOwnProperty(key)) { // focus on our obj. not all others on page 
            var inType = inputs[key].inputType;
            var inName = inputs[key].inputName;
            var inVal = $(inType + "#" + inName).val().trim(); // construct input field

            if (inVal == '' || inVal == null) {
                errors = true;

                $('#' + inName + '-error').html('');
                $('#' + inName + '-error').hide().fadeIn().html(inputs[key].errorMsg);
                $(inType + '#' + inName).focus();
                $('#modal-loadable-inner').scrollTop(inputs[key].scrollTop);

                return;
            } else { // user corrected error
                errors = false;
                $('#' + inName + '-error').html(''); // remove error txt
            }
        }
    }

誰かがこれをDougCrockfordのjslintボードに投稿し、彼は次のように応答しました。

for(key in object){if(Object.prototype.hasOwnProperty.call(object、key)){...}}

hasOwnPropertyはメソッドではなく演算子である必要があります。これは、メソッドであるため、この種の問題が発生しやすいためです。しかし、それはそれが何であるかなので、あなたはそれを回避しなければなりません。

Chrome、FF、Safari、Operaなどで通常どおり正常に動作します。回避策について何かアイデアはありますか?

4

2 に答える 2

4

trim()文字列にはこのメソッドがないため、これが原因だと思います。

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

var inVal = $.trim($(inType + "#" + inName).val());
于 2011-11-16T02:46:53.693 に答える
1

.val()文字列を返さない可能性があるため、文字列を呼び出すと.trim()問題が発生する可能性があります。中間変数を使用して、呼び出す前に未定義でないことを確認してください.toString().trim()(Javascriptで文字列に追加したメソッドであると仮定し.trim()ます-jQueryメソッドはです$.trim())。

于 2011-11-16T02:46:54.240 に答える