Javascript 当我试着做身份证的时候&引用;无法读取属性';长度';指未定义的;

Javascript 当我试着做身份证的时候&引用;无法读取属性';长度';指未定义的;,javascript,Javascript,亲爱的大家;我不确定是否也应该共享我的html项目。我被困在这里:/ 我已经检查了一些类似的问题,但还没有解决方案… 我想做一个ID,这个ID应该总是不同的,但不能解决我的问题 未捕获的TypeError:无法读取未定义的属性“length” 请帮助我:

未捕获 TypeError:无法读取未定义的属性“length” 在Object.addItem(app.js:30) 在kontrolEkle(app.js:112) 在HTMLDocument。(app.js:97) //价格预算控制 v

亲爱的大家;我不确定是否也应该共享我的html项目。我被困在这里:/ 我已经检查了一些类似的问题,但还没有解决方案…

我想做一个ID,这个ID应该总是不同的,但不能解决我的问题

未捕获的TypeError:无法读取未定义的属性“length” 请帮助我:

未捕获

TypeError:无法读取未定义的属性“length” 在Object.addItem(app.js:30) 在kontrolEkle(app.js:112) 在HTMLDocument。(app.js:97)

//价格预算控制 var butcekontrol=(函数(){

当我回到这里:

       return{   
       addItem: function(type,des,val){
       var newItem,ID;
        // YENİ ID OLUŞTURMA   
        if (data.tumislem[type].length > 0) {
                ID = data.tumislem[type][data.tumislem[type].length - 1].id + 1;
            } else {
                ID = 0
            }
        // Tipine Göre Ekleme Çıkarma Yapma
       if(type==='exp'){
        newItem = new Giderler(ID , des , val)
       } else if(type==='inc'){
           newItem = new Gelirler(ID , des, val)
       }
       // Dataya Push İşlemi Yapma       
      data.tumislem[type].push(newItem);
           // RETURN//
           return newItem;
     },
        testing:function(){
            console.log(data);}
  };               

})();
用户界面控制代码区

    var arayuz = (function(){
    var Domstrings = {
        InputType:'.add__type',
        InputDescription:'.add__description',
        InputValue:'.add__value',
        InputBtn:'.add__btn',

    };

       return {
        getInput: function() {
            return {
                type: document.querySelector(Domstrings.InputType).value, // Will be either inc or exp
                description: document.querySelector(Domstrings.InputDescription).value,
                value: document.querySelector(Domstrings.InputValue).value
            };
        },

           getDomstrings:function(){
               return Domstrings;
           }

     }

})();
最后一部分呢

    var kontrol = (function(butceknt,arayz){
    var setupcontroller = function(){
       //KODLAR BURAYA
        var DOM = arayuz.getDomstrings();
     document.querySelector(DOM.InputBtn).addEventListener('click',kontrolEkle);

        document.addEventListener('keypress', function(tik){
            if(tik.keyCode===13){
               kontrolEkle();
            }})

        //END Of the line 

    }

 var kontrolEkle = function(){
    //1. Formlardan Değer Alma
    var input,addItem;

     input = arayuz.getInput();
        console.log(input);
    //2.Bütçe Kontrole Ekleme

     addItem = butcekontrol.addItem(input.type,input.description,input.value);
    //3.Kullanıcı Arayüzünde Güncelleme

    //4.Bütçeyi Hesaplama

    //5.Kullanıcıya Son Bütçeyi Gösterme

    }
return{
    init:function(){
        console.log('Application Started');
        setupcontroller();
    }
}


})(butcekontrol,arayuz);

kontrol.init();

发生这种情况是因为您试图获取未定义的长度,您能否确保数据。tumislem[type].length通过控制台返回值。记录它?

嘿,伙计,我认为这一行是问题所在

ID=data.tumislem[type][data.tumislem[type].length-1].ID+1;

data.tumislem[type]
返回为
null
undefined
,请先检查那里。

console.log(data.tumislem[type])
    var kontrol = (function(butceknt,arayz){
    var setupcontroller = function(){
       //KODLAR BURAYA
        var DOM = arayuz.getDomstrings();
     document.querySelector(DOM.InputBtn).addEventListener('click',kontrolEkle);

        document.addEventListener('keypress', function(tik){
            if(tik.keyCode===13){
               kontrolEkle();
            }})

        //END Of the line 

    }

 var kontrolEkle = function(){
    //1. Formlardan Değer Alma
    var input,addItem;

     input = arayuz.getInput();
        console.log(input);
    //2.Bütçe Kontrole Ekleme

     addItem = butcekontrol.addItem(input.type,input.description,input.value);
    //3.Kullanıcı Arayüzünde Güncelleme

    //4.Bütçeyi Hesaplama

    //5.Kullanıcıya Son Bütçeyi Gösterme

    }
return{
    init:function(){
        console.log('Application Started');
        setupcontroller();
    }
}


})(butcekontrol,arayuz);

kontrol.init();