提问者:小点点

错误:未捕获的TypeError:无法读取未定义的属性“substr”


hello我在我的行中有一个错误frequency=frequency.substr(1);在控制台中抛出的错误是未捕获TypeError:无法读取未定义的属性“substr”。 我不知道我该怎么解决。

这是我的代码:

function save() {
    var startfrequency = '';
    var frequency = $('input:radio[name=frequency]:checked').attr('id');
    frequency = frequency.substr(1);
    if(frequency != undefined ){
        if(frequency == 'daily'){
            if(!$('input:checkbox[name="frequencyDays"]').is(':checked')){
                $('input:checkbox[name="frequencyDays"]').parent().addClass('form-valide-error-bottom');
                return;
            }
            var daysfrequency = [];
            $("input:checkbox[name=frequencyDays]:checked").each(function (){
                var fd = $(this).attr('id');
                daysfrequency.push(fd.substr(2));
            });
            daysfrequency = daysfrequency.join(",");
        }else if(frequency == 'biweekly'){          
            var daysfrequency = [];
            $("input:radio[name=frequencybiweekly]:checked").each(function (){
                var fq = $(this).attr('id');
                daysfrequency.push(fq.substr(2));
            });
            daysfrequency = daysfrequency.join(",");
        }else{
            var daysfrequency = '';
            //START FREQUENCY
            if(!$('input:radio[name="startfrequency"]').is(':checked')){
                $('input:radio[name="startfrequency"]').parent().addClass('form-valide-error-bottom');
                return;
            }
            var startfrequency = [];
            $("input:radio[name=startfrequency]:checked").each(function (){
                var ifr = $(this).attr('id');
                startfrequency.push(ifr.substr(2));
            });
            startfrequency = startfrequency.join(",");
        }
    }else{
        frequency = '';
    }

共1个答案

匿名用户

frequency变量定义在:

var frequency = $('input:radio[name=frequency]:checked').attr('id');

.attr('id')(请参阅文档)查找id属性,如果未设置该属性,则返回未定义

因此,如果id未设置,则您的frequencyundefined,这会导致错误,因为undefined上没有substr函数。

因此,第4行frequency=frequency.substr(1);导致了这个错误,尝试将它下移一行到未定义的检查下面,然后它就不会出错了。