2012-01-19 6 views
1

のためにtrueを返し、私は次のスクリプトを持っている:のindexOfはいつもはdocument.location

if (window.location.href.indexOf('env=P')) {  
    env = 'P'; 
    console.log("P"); 
} else { 
    env = 'A'; 
    console.log("A"); 
} 

ENVは関係なく、URLが何であるかを常にPに等しいではありません。私は以前にindexOfをuriのために使用していたと確信していますが、ここでその問題がわかりません。

答えて

3

これは、indexOfが0を返さないため、trueと評価されるからです。

if(window.location.href.indexOf( 'env = P')> -1)

2

indexOfは、部分文字列が文字列内にない場合は-1を返し、-1trueの値です。

これは、部分文字列のインデックスを返します('foo'.indexOf('f')で、0を返すためです)。

あなたのチェックは次のようになります。

if (location.href.indexOf('env=P') >= 0) { 
0

indexOf -1を返し一致しない場合、Truthy値のthats、あなたが明示的にする必要があります。

if (window.location.href.indexOf('env=P') === -1) { 
    ///no match