Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法调用方法';toLowerCase';未定义的_Javascript_Jquery - Fatal编程技术网

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

Javascript 无法调用方法';toLowerCase';未定义的,javascript,jquery,Javascript,Jquery,我有这段代码,它从文本框中读取值,我认为在尝试parseInt()之前检查“”是安全的,但显然不是 我得到一个错误: 未捕获的TypeError:无法调用未定义的方法“toLowerCase” 使用此代码: var total = 0; $.each('.reg-input', function () { if ($(this).val() == '') { }

我有这段代码,它从文本框中读取值,我认为在尝试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();                    
            }

'.reg input'
是一个字符串,在这种情况下,
这个
也将是一个字符串,而不是dom元素。请尝试以下方法:

$('.reg-input').each(function(){...
if($(this).val()==“”)
检查值是否为未定义的字符串“”。
您可以像这样使用typeof运算符
if(typeof$(this).val()=='undefined')
出现奇怪错误的原因是调用
$。每个
都使用字符串而不是集合

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

要循环使用选择器查找的元素,请使用,而不是:


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

我遇到了完全相同的问题,我通过将
$(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();                    
        }

尝试修复括号
total+=parseInt($(this.val())
不应该是
total+=parseInt(this.val())?这是粘贴它的问题,我有正确的括号在代码没有人阅读错误?您实际在哪里使用
“toLowerCase”
?!?无论您在哪里调用
.toLowerCase()
被引用的对象都是
未定义的
@zzzzBov,它位于
$()
方法或
.val()
中,具体取决于失败的位置。他在遍历字符串,而不是元素集合。这才是真正的问题所在。不太清楚为什么会被否决。。。检查字符串“”和未定义的内容有一个主要区别。。。OP你真的应该试一试…这与被问的问题无关。是的,他进入了else{},因为他的if语句失败了。。。如果他的If语句捕捉到$(this)未定义,它将不会转到else,并将以OP正在查找的方式进行验证。。。他不会犯错误的。。。编辑:如果你想要一个更一般的答案。。。不val()对undefined进行求值是不安全的……但问题在于错误,而不是问题标题的标签错误。@JLeslie-如果使用jQuery的.val()对val()进行了未定义,则该行将变成空字符串,这就是为什么该行在其中的原因,您的行也可以工作谢谢,很好的捕获,我留下了一点拼写错误(遗漏了“),然后试图告诉人们这不是我想要的problem@ScottSelby凯文是第一个来的。确保按最年长的人点菜,你会首先看到凯文的帖子。
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();                    
        }