我有一长串带有页面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');
}
}
}
答案 0 :(得分:-1)
博文this post有一个表格,用于解释javascript条件语句中哪些值评估为true。对于数值,它仅表示+ 0,-0和NaN评估为假。因为indexOf在没有匹配的情况下返回-1,所以对于不匹配的id,它的计算结果为true。您可能想要使用:
if(pageHref.indexOf(id) > -1)
答案 1 :(得分:-2)
IndexOf返回一个数字,如果数字为-1,则没有匹配。
试试例子。
pageHref.indexOf(id) != -1
。