2016-07-28 21 views
-3

ページIDの長い文字列があります。現在のページIDが配列からのものと一致する場合、stuffが発生する必要があります(このテストでは警告)。 URLに配列のいずれかの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の条件文でどの値が真と評価されるかを説明する表があります。数値の場合は、+ 0、-0のみとなり、NaNはfalseと評価されます。 indexOfは一致しないため-1を返すので、一致しないIDの場合はtrueに評価されます。あなたが使用したいと思う:(!ID => pageHref.indexOf(ID)== -1)

if(pageHref.indexOf(id) > -1) 
関連する問題