0
var NavAxis='yx';
var url1 = 'file:///C:/Users/Luke/Desktop/Senior%20Project/index.html#/page4'
var url2 = 'file:///C:/Users/Luke/Desktop/Senior%20Project/index.html#/page5'   

if(location.href == (url1 || url2)){
      NavAxis='xy';
}else{
       NavAxis='yx';
} 

なぜこれが機能しないのですか?URLが指定されたもののいずれかである場合、NavAxisが「xy」に変更されるようにしたいと思います。

4

3 に答える 3

7

あなたが本当に欲しいのは:

if ( location.href === url1 || location.href === url2 )

あなたが書いたものは、最初に内側の括弧を評価します: (url1 || url2). url1それは真実である限り評価されurl1ます(それはあなたのコードにあります)。

location.hrefしたがって、が に等しいurl1が ではない場合にのみ、条件が真になりますurl2

于 2012-04-18T04:46:13.607 に答える
6

JavaScript OR の仕組み:

true || true   // true;
true || false  // true;
false || false // false;
0 || true      // 0 will translate to boolean because other side is boolean and it returns true
1 || 3         // no translation, returns 1
undefined || 2 // undefined will translated to boolean false. returns 2
null || "wow"  // "wow"

これはあなたがこれをすべき方法です:

if(location.href == url1 || location.href == url2){
    NavAxis='xy';
}else{
   NavAxis='yx';
}

これは 2 つまたは 3 つのチェックで機能しますが、10 個の URL がある場合はどうでしょうか。

Array.indexOf()これは、複数の項目のチェックで機能するメソッドを使用したより良いアプローチです。

if([url1, url2, url3].indexOf(location.href) != -1 ){
        NavAxis='xy';
    }else{
       NavAxis='yx';
    }
于 2012-04-18T04:45:53.943 に答える
5

url1 || url2file:///...#/page4(ie )と評価されurl1ます。したがって、本質的に、あなたは常に比較location.hrefurl1ています。どちらかと比較するには、次を試してください。

if (location.href == url1 || location.href == url2)
于 2012-04-18T04:48:19.180 に答える