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
            }
        }
    }

有人在 Doug Crockford 的 jslint 板上发布了这个,他回复说:

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

hasOwnProperty 应该是一个操作符,而不是一个方法,因为作为一个方法,它很容易出现这些问题。但它就是这样,所以你必须解决这个问题。

像往常一样在 Chrome、FF、Safari、Opera 等中正常工作。关于解决方法的任何想法?

4

2 回答 2

4

我认为这是由于您的trim()as 字符串没有此方法造成的。

试试这个

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

.val()可能不会返回字符串,因此调用.trim()它可能会导致问题。尝试使用中间变量并在调用它之前检查它是否未定义.toString().trim()(假设.trim()是您在 Javascript 中添加到字符串的方法 - jQuery 方法是$.trim())。

于 2011-11-16T02:46:54.240 回答