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