2016-09-06 7 views
0

다음 메시지가 표시됩니다. "잡히지 않은 TypeError : 아래의 코드를 실행하는 동안 'toString'이 null 인 속성을 읽을 수 없습니다. Javascript에 익숙하지 않으므로 도움을 받으실 수 있습니다.잡히지 않은 TypeError : null의 '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(). 그래서 먼저 일치를 확인하고 일치하지 않는 경우, false을 반환 (또는 당신이 원하는 어떤 다른 할 - 또는 일치하도록 정규식 변경)해야한다 또한

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(); 
} 

당신이 함수를 호출 두 번, 한 번 결과를 무시하고, 당신의 if 라인 :

if (getUrlVars()) 

다음 if 반환 경우는 true, 다시. 해당 유형이 대신 함수인지 확인하십시오.

관련 문제