2016-09-06 14 views
0

Ich habe diese Nachricht: "Uncaught TypeError: Kann die Eigenschaft 'toString' von Null nicht lesen, während der folgende Code ausgeführt wird. Jede mögliche Hilfe würde geschätzt werden, da ich Javascript nicht vertraut binUncaught TypeError: Kann die Eigenschaft 'toString' von null nicht lesen

Danke im Voraus.

function getUrlVars() { 
 
    var arrGamePath = document.referrer; 
 
    if(arrGamePath) { 
 
     var reg = new RegExp("[/][a-zA-Z]{2}-[a-zA-Z]{2,4}[/]"); 
 
     var locale = reg.exec(arrGamePath) .toString(); 
 
     while (locale.indexOf("/") != -1) { 
 
      locale = locale.replace("/", ""); 
 
     } 
 
     return locale; 
 
    }else{ 
 
     return false; 
 
    } 
 
} 
 

 
if(getUrlVars()) { 
 
    sCID = getUrlVars(); 
 
}

+0

Was gibt ['exec()' zurück, wenn keine Übereinstimmung gefunden wird (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec#Return_value)? - ** null ** – Tushar

+0

Wahrscheinlich brauchen Sie '/ [a-zA-Z] {2} - [a-zA-Z] {2,4} /. exec (document.referrer)' – Tushar

Antwort

0

Ihre Regex passt nicht und so gibt null. null hat keine Methode toString(). So sollten Sie zunächst nach einer Übereinstimmung überprüfen und, wenn sie nicht übereinstimmen, zurückgeben false (oder tun, was immer Sie tun wollen - oder Ihre Regex zu ändern, so dass es passt)

function getUrlVars() { 
    var arrGamePath = document.referrer; 
    if(arrGamePath) { 
     var reg = new RegExp("[/][a-zA-Z]{2}-[a-zA-Z]{2,4}[/]"); 
     var matches = reg.exec(arrGamePath); 
     if (!matches) return false; 
     var locale = matches.toString(); 
     while (locale.indexOf("/") != -1) { 
      locale = locale.replace("/", ""); 
     } 
     return locale; 
    }else{ 
     return false; 
    } 
} 

if(typeof getUrlVars == 'function') { 
    sCID = getUrlVars(); 
} 

Auch werden Sie die Funktion aufrufen zweimal, einmal in Ihrer if Linie, ignoriert das Ergebnis:

if (getUrlVars()) 

und dann, wenn die if true zurück, wieder. Überprüfen Sie einfach, ob der Typ eine Funktion ist.

Verwandte Themen