2011-01-27 18 views
2

私はjavascript window.locationに新しいので、特定のフレーズがプロンプトボックスに入力されたときに、特定のページに誘導するために使用しようとしていました。私はそれを正しい方法で行ったのですか?何らかの理由で動作しないようです。javascript window.locationはどのように機能しますか?

<html> 
<head> 
<script> 
function desiredPg() { 
    var pgDesired = prompt("What do you want?"); 
    if (pgDesired == "Log In" || "log in") { 
     window.location = "google.com"; 
    } else if (pgDesired == "Register" || "register") { 
     window.location = "apple.com"; 
    } else { 
     alert("Please enter a valid page name. Do not forget to use appropriate spaces and capitalize if necessary"); 
    } 
} 
</script> 

</head> 
<body onLoad="desiredPg()"> 
+2

あなたは関数をすべて呼び出していますか? – kjy112

+0

それは私にとって正しいようです... 'window.location'は、ブラウザにあなたが何を伝えるかをリダイレクトします。 – JCOC611

+0

ええ、私は体の負荷でそれを呼び出す。私はif文を追加する前に動作することを確認しましたが、その場合は残りの部分を投稿します – chromedude

答えて

4

あなたはそう簡単に文字列にhttp://を付加、あなたは別のホストに移動する場合絶対URLを使用する必要があります。

文字列を小文字に変換して、比較を1回行うだけで済みます。

私はあなたがハッシュを使用することをお勧めしたいが、これはコードトンをクリーンアップし、一つだけif条件必要:あなたは「apple.com」のようなパスにwindow.locationを設定した場合

function desiredPg() { 
    var pgDesired = prompt("What do you want?"); 
    var sites = {'log in': 'http://google.com', 'register':'http://apple.com'}; 

    if (typeof sites[pgDesired.toLowerCase()] !== 'undefined') { 
    window.location = sites[pgDesired.toLowerCase()]; 
    } else { 
    alert("Please enter a valid page name."); 
    } 
} 
2

をパスはの相対パスとなります。現在Googleを表示している場合は、「google.com/path」が検索されます。

プロトコルを含む、代わりに絶対パスを試してみてください

...

window.location = "http://apple.com"; 
0

ユーザーがページの名前を覚えて作成することをお勧めであるかどうかはともかく、コード内の2つの問題があります。

まず、あなたが個別にif文で各条件を評価する必要があるので、(ヤコブのソリューションは、より堅牢であるが)、それらがpgDesired=="A" || pgDesired=="B"よう

第二になり、あなたはリング0で述べたように、絶対パスを使用する必要があります。だから、window.location = "http://apple.com";

+0

ええ、私はユーザーがページ名を覚えていることは一般的な問題ですが、この場合は明示的に言わない限りページを見つけられないようになります。 – chromedude

0

つ以上nitpick:これを行うには、「標準」の方法は、window.locationhrefプロパティを使用している:あなたはブラウザの履歴のうち、現在の位置を維持したい場合は

window.location.href = "http://www.example.com/"; 

replace()を使用します。

window.location.replace("http://www.example.com/"); 
関連する問題