2016-07-28 113 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)