2012-10-04 47 views
0

我確定這很容易,我也看到了類似的問題,但沒有人幫助我弄清楚爲什麼這不起作用。難道沒有人告訴我爲什麼當currentPage被設置爲faqcontact時不能捕捉到?Javascript如果使用或者

<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> 

我設定一個警報彈出,所以我可以看它是否被正確地被設置爲faqcontact,它是如此,我不知道爲什麼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語句來,但隨着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 
}