2016-09-06 41 views
0

次のメッセージが表示されます。「キャッチされていないTypeError:以下のコードを実行している間、 'toString'がnullです。私はJavascriptに慣れていないので、どんな助けもありがたいですUncaught TypeError:ヌルの 'toString'プロパティを読み取ることができません

ありがとうございます。

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

['exec()'は何も見つからないときに何を返しますか?】(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec#Return_value)? - ** null ** – Tushar

+0

おそらく '/ [a-zA-Z] {2} - [a-zA-Z] {2,4} /。exec(document.referrer)'が必要です。 – Tushar

答えて

0

あなたの正規表現が一致し、そうnullを返していません。 nullにはメソッドtoString()がありません。また、あなたは、関数を呼び出している

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(); 
} 
に - だから、最初のマッチをチェックする必要があり、それが一致しない場合、 falseを返す(またはそれが一致するように、あなたの正規表現を変更したり、あなたがしたい他のものは何でも)二回、一回の結果を無視して、あなたの ifラインで:

if (getUrlVars()) 

、その後if戻り場合はtrue、再び。その型が関数であるかどうかを確認するだけです。

関連する問題