2012-10-04 6 views
0

나는 이것이 매우 쉽고 비슷한 질문을 본 적이 있지만 아무도 이것이 작동하지 않는 이유를 알 수 없었습니다. 누구도 currentPagefaq 또는 contact으로 설정되어있는 이유를 알 수 없습니까? 자바와 함께 사용하는 경우

<script type="text/javascript"> 
       function init() { 
       document.getElementById('searchSubmit').onclick=function(){ 
         var uriArgs = window.location.search; 
         var currentPage = uriArgs.match(/page=?(\w*)/); 
         if ((currentPage == null) || (currentPage == 'faq') || (currentPage == 'contact')) { 
           currentPage = "index"; 
           document.getElementById('searchHidden').value = currentPage; 
         } 
         else { 
           document.getElementById('searchHidden').value = currentPage[1]; 
         } 
       } 
       } 
       window.onload=init; 
     </script> 

는 내가 제대로 faq 또는 contact로 설정되고되었는지 여부를 볼 수 있도록 팝업에게 경고를 설정하고 내가 if 문이 잡기되지 않는 이유를 모르겠어요 그렇게했다.

고맙습니다.

답변

2

일치하는 것이 있으면 String.match은 배열의 인덱스 1에서 캡처 그룹을 반환합니다. 예 :

> 'page=sdfsfsdf'.match(/page=?(\w*)/) 
["page=sdfsfsdf", "sdfsfsdf"] 

그래서 당신이 match에 의해 반환 된 배열의 내부 를 볼 필요가 (이 null없는 가정).

if (currentPage == null || currentPage[1] == 'faq' || currentPage[1] == 'contact') { 
    /* ... */  
} 
+0

omg 왜 이런 일이 항상 일어날 지 모르지만 나는이 질문을 게시 한 후에야 깨달았습니다. 도와 주셔서 감사합니다. 이제 작동합니다. – Dylan

0

귀하의 문제는 if -statement하지,하지만 match method의 결과 : 그것은 경기와 일치하는 그룹의 배열을 반환 - 첫 번째 일치하는 그룹에 비교하려는.

var match = window.location.search = uriArgs.match(/page=?(\w*)/), 
    currentPage = false; 
if (match != null) 
    currentPage = match[1]; 

if (!currentPage || currentPage=='faq' || currentPage=='contact') { 
    // do something 
} 
관련 문제