2013-07-18 43 views
7

Şu anda sorunlara neden olan şu anda oldukça işlevsel olmayan bir Javascript programım var.TypeError: 'undefined' bir nesne değil

TypeError: 'undefined' is not an object (evaluating 'sub.from.length') 

Ne muhtemelen tahmin gibi ben yapmaya çalışıyorum, sub dict belli "from" dizisinin length kontrol etmektir: Ancak, ben sadece anlamadığım bir hata atar . İşte source code for the entire function, ve burada hataya neden olduğunu düşünüyorum döngü kod:

console.log(afcHelper_ffuSubmissions.length); // just for debugging, returns the correct number 
for (var i = 0; i < afcHelper_ffuSubmissions.length; i++) { // this whole section works fine 
    var sub = afcHelper_ffuSubmissions[i]; 
    //console.log("THIS IS BROKEN DOWN BY LINK",afcHelper_Submissions[i]); 
    if (pagetext.indexOf(afcHelper_ffuSections[sub.section]) == -1) { 
     // Someone has modified the section in the mean time. Skip. 
     document.getElementById('afcHelper_status').innerHTML += '<li>Skipping ' + sub.title + ': Cannot find section. Perhaps it was modified in the mean time?</li>'; 
     continue; 
    } 
    var text = afcHelper_ffuSections[sub.section]; 
    var startindex = pagetext.indexOf(afcHelper_ffuSections[sub.section]); 
    var endindex = startindex + text.length; 

    console.log(sub); 
    if (typeof(sub.from) != 'undefined' && sub.from.length > 0) { // ** problem spot?? this is the code i recently added. 
     for (var i = 0; i < sub.from.length; i++) { 
      mainid = sub.from[i]['id']; 
      var sub = afcHelper_Submissions[mainid]; // and then it goes on from here... 

Herhangi bir fikir çok iyi olurdu. Açıkçası, (typeof(sub.from))

+1

Firebug gibi bir Javascript ayıklayıcısını veya Chrome'un yerleşik hata ayıklayıcısını kullanın. Orada bir sınır noktası koyabilir ve değişkenlerinizi araştırabilirsiniz. –

+0

Bazı örnek veriler verebilir misiniz? – loganfsmyth

+0

Belki sub.from is null: 'typeof (null)! =" Undefined "; // = true' – HMR

cevap

4

Açıkça kontrol edilen bir şey hakkında neden TypeError aldığımı anlayamıyorum Bir şey olup olmadığını nasıl kontrol edebileceğinizden emin değilim. undefined ve aynı zamanda undefined bir hata olsun. Hangi tarayıcıyı kullanıyorsunuz?

Sen şu şekilde kontrol (ekstra = ve uzunluğu bir truthy değerlendirme yapma) olabilir

if (typeof(sub.from) !== 'undefined' && sub.from.length) { 

[güncelleme] Sana alt sıfırlamak ve böylece sub.from sıfırlamak görüyoruz

ama sub.from varsa ve yeniden kontrol başarısız:

for (var i = 0; i < sub.from.length; i++) {//<== assuming sub.from.exist 
      mainid = sub.from[i]['id']; 
      var sub = afcHelper_Submissions[mainid]; // <== re setting sub 

Benim tahminim hata varsa ekstresinde ancakdeğil kibildirimi. Firebug'da bir hata durumunda otomatik olarak kırılabiliyor ve sanırım bu satırda kırılacak (if ifadesinde değil).

+0

Mac OS 10.8 üzerinde Safari kullanıyorum; kodunuzla denedim ve aynı hatayı aldım, http://i.imgur.com/XZEnl2V.png - başka bir tarayıcıda dener ve hata mesajıyla geri bildirir, eğer bu yardımcı olursa ... – user1483482

+0

@ user1483482 Acaba veri ne. Aynı zamanda undefined ve undefined olmayan tuhaf bir şey. – HMR

+0

Google Chrome, 'Türetilmemiş TypeError: 'undefined' özelliğinin 'uzunluğunu' okuyamıyor 'diyor:/ – user1483482

-2

'undefined' bir dizedir ve nesne muhtemelen buna eşit değildir ... Ancak, tırnak işareti olmadan undefined kullanırsanız, bu bir anahtar sözcüktür.

Yani, evet, 'undefined' dizgisine eşit değildi, ancak kullanmaya gittiğinizde, gerçekten tanımlanmamıştı.

İlgili konular