2016-07-28 149 views
-3

我有一個很長的字符串數組頁面ID;噹噹前頁面ID與數組中的某一個匹配時,需要發生一些事情(在此測試中警告)。 無論網址是否包含陣列中的某個ID,彈出的警報都會在任何頁面上彈出。我的if語句有什麼問題:if(pageHref.indexOf(id))?感謝您的任何建議找到字符串索引

var pageHref = window.location.href; 
var ids = ['14528','14417','17529']; 
for (var i = 0; i < ids.length; i++) { 
    var id = ids[i]; 
    if (id.length > 0) { 
     if(pageHref.indexOf(id)){ 
      //do something 
      alert('a'); 
     } 
    } 
} 
+2

''ids.find' – gcampbell

+0

返回indexOf''-1'如果沒有發現 – Arnial

+0

爲什麼反對票爲答案? – ssilas777

回答

-2

IndexOf返回一個數字,如果數字是-1,則不存在匹配。

嘗試舉例。 pageHref.indexOf(id) != -1

-2

當找不到匹配時pageHref.indexOf(id)評估爲-1,然後評估爲true;一場比賽也是true,所以它總是如此。

var pageHref = window.location.href; 
 
var ids = ['14528','14417','17529']; 
 
for (var i = 0; i < ids.length; i++) { 
 
    var id = ids[i]; 
 
    if (id.length > 0) { 
 
     if(pageHref.indexOf(id) !== -1){ 
 
      //do something 
 
      alert('a'); 
 
     } 
 
    } 
 
}

這樣,if檢查是否有不爲0的比賽。

-1

博客文章here有一張表,它解釋了在JavaScript條件語句中評估爲true的值。對於數值,它只表示+ 0,-0和NaN評估爲假。由於indexOf在沒有匹配的情況下返回-1,因此對於不匹配的id會計算爲true。您可能需要使用:(!ID => pageHref.indexOf(ID)== -1)

if(pageHref.indexOf(id) > -1)