无法调用未定义的方法'toLowerCase'

时间:2012-09-26 19:32:42

标签: javascript jquery

我有这段代码,它正在从文本框中读取值,我想在尝试parseInt()之前检查''是安全的,但显然不是。

我收到错误:

  

未捕获的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 个答案:

答案 0 :(得分:7)

'.reg-input'是一个字符串,this在这种情况下也是一个字符串,而不是一个dom元素。试试这个:

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

答案 1 :(得分:4)

您收到奇怪错误的原因是您使用字符串而不是集合来调用$.each

字符串是一个对象,所以它仍然是一个集合,但集合中的项目是字符串类的属性和方法(而toLowerCase就是其中之一)。

要遍历使用选择器找到的元素,请使用each method代替$.each method

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

现在循环中的this将是一个元素,而不是字符串类的成员,因此您可以使用$(this).val()来获取值。

答案 2 :(得分: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();                    
        }

答案 3 :(得分:-1)

if ($(this).val() == "") 检查值是否为字符串“”未定义 您可以像这样使用typeof运算符  if(typeof $(this).val() == 'undefined')