2016-06-17 7 views
0

ich mit einigem Code ein Problem habe ...TypeOf Problem mit jQuery-Code

Dies ist der Code:

(function($) { 
    $.fn.inc = function(url, transform, post, t) { 
     return this.length && url ? this.each(function() { 
      t = $(this); 
      $.ajax({ 
       url: url, 
       success: function(txt, jqXHR, textStatus) { 
        t.html($.isFunction(transform) ? transform(txt, url) : txt); 
        $.isFunction(post) && post(url, jqXHR, textStatus); 
       } 
      }); 
     }) : this; 
    }; 

    $(function() { 
    $('[class*="inc:"]').each(function() { 
     var match = /inc:(\S+)/.exec(this.className || ''); 
     if(typeOf(match[1]) != "undefined") 
      match && $(this).inc(unescape(match[1])); 
    }); 

    }); 

})(jQuery); 

und auf der Linie 18 ist es Punkt zu diesem Fehler:

ReferenceError: typeOf is not defined 


if(typeOf(match[1]) != "undefined") 

Was ist los mit dem Code?

Fehler pic: enter image description here

Dieser Fehler weist auf:

TypeError: a is null 

**return (a.ownerDocument || a) !== n && m(a), t(a, b)** 
+1

statt 'typeOf' sollte es sein' typeof' –

Antwort

2

Der Betreiber Sie suchen, ist typeofalle in Klein. JavaScript unterscheidet zwischen Groß- und Kleinschreibung.

Und beachten Sie, dass es ein Operator ist, keine Funktion, so dass Sie die Klammern nicht benötigen (obwohl sie nicht wirklich weh tun).

Beachten Sie auch, dass die .exec() method kann null zurückkehren, so müssen Sie, ob match ist nullvor Sie versuchen, es als ein Array zu verwenden:

if (match != null && typeof match[1] != undefined) 

Oder einfach:

if (match && typeof match[1] != undefined) 

Aber Sie sollten nicht testen müssen, ob match[1]undefined ist, denn wenn match selbst nichtistdann bedeutet das, dass Ihre Regex einschließlich der Teilstring-Übereinstimmung übereinstimmt. So sollte die folgende Ordnung sein:

if (match) 
    $(this).inc(unescape(match[1])); 
+0

Das geändert und jetzt bekomme ich: TypeError: a ist null –

+0

Ich sehe keine Variablen in Ihrem Code namens ' a'. Aber du solltest testen, dass "match" nicht "null" ist * bevor * du versuchst, 'match [1]' zu verwenden. – nnnnnn

+0

@nnnnnn Minifiziert? – VisioN

1

typeof ist keine Funktion, es ein Operator ist.

Sie sollten es auf diese Weise verwenden:

if(typeof match[1] != "undefined") 

Es klein geschrieben werden sollte.

+0

, die geändert und ich bekomme jetzt: Typeerror: a null –

+1

@estevangomez das scheint ein anderes Problem an anderer Stelle zu sein, ich sehe keine 'a'-Deklaration – antyrat

0

Dies sollte typeof (Small 'O')

+0

Das geändert und jetzt bekomme ich: TypeError: a ist null –

+0

@estevangomez für diese TypeError: a ist null, versuchen Sie mit jQuery voll anstelle von minified, und dann sehen lassen. –

+0

OK, ich führe jquery als unminified aus und der Fehler sagt folgendes: TypeError: a ist null \t Rückgabewert (a.ownerDocument || a)! == n –