web-dev-qa-db-ja.com

window.locationはjavascriptでは機能しません

以下のこのコードは、リダイレクトしようとすると、何らかの理由で機能しません。 window.location.hrefなど、他のいくつかの方法を試しました。動作するのはwindow.open ("")だけですが、同じページを表示する必要がある場合は、新しいウィンドウでページが開きます。 window.open("", "_self")を実行すると、再び機能しなくなります。 window.locationalertに置き換えると正常に機能するため、コード全体は正常であり、同じページにリダイレクトされないようになっていると思います。この問題は、私のWindows ChromeおよびMacFirefoxでも発生します。

<html>
    <head>
        <script type="text/javascript">
            function checkAnswers(){    
                getElementById("myQuiz");
                if(myQuiz.elements[1].checked){
                    window.location = "www.google.com";
                }else{
                    alert("Failed");
                }
            };
        </script>
    </head>
    <body>
        <img src="Castle.JPG" />
        <form id="myQuiz" onsubmit="checkAnswers()" action="">
            <p>Name the country this castle is located in?
                <br/>
                <input type="radio" name="radiobutton" value="A"/>
                <label>England</label>
                <input type="radio" name="radiobutton" value="B"/>
                <label>Ireland</label>
                <input type="radio" name="radiobutton" value="C"/>
                <label>Spain</label>
                <input type="radio" name="radiobutton" value="D"/>
                <label>France</label>
                <input type="submit" name="submit" value="Submit"/>
                <input type="reset" name="reset" value="Reset"/>
            </p>
        </form>
    </body>
</html>
7
George Kashouh

jsを次のように変更します。

function checkAnswers()
{
    var myQuiz=document.getElementById("myQuiz");
    if (myQuiz.elements[1].checked) {
        window.location.href = "http://www.google.com";
    }
    else {
        alert("Failed");
    }
    return false;
};

と変更:

<form id="myQuiz" onsubmit="checkAnswers()" action="">

<form id="myQuiz" onsubmit="return checkAnswers();" action="">
14
artwl

場所を変更するときは、絶対URLを指定する必要があります。

location.href = '/some_page_on_my_site';

または:

location.href = 'http://www.google.com';

または:

location.href = '//www.google.com';

最後のものは、現在のスキームに応じて、httpまたはhttpsに移動します。ありがとう@Derek

4
Ja͢ck

2018年

マルチブラウザ:サファリ、クローム、Firefox:

ちょうどこの作品:

window.location.replace(url)

window.locationまたはwindow.locationにURLを割り当てようとする別のオプションが失敗する

2
stackdave

これを実行すると:

window.location ="www.google.com";

現在のrequestURIに関連してこれを実行しています。したがって、 http://example.com ページを表示している場合は、次の場所にリダイレクトしようとしています。

http://example.com/www.google.com

代わりに、プロトコルを含めることを忘れないでください。

window.location ="http://www.google.com";

Window.locationはアドレスバーではなく、技術者以外の人がアドレスバーにWebアドレスを入力するのを処理するように設計されていることを忘れないでください。 window.locationでは、http://を明示的に含める必要があります。

2
jmort253

window.locationで使用されているURLはローカルです。 URLのhttp://部分を追加する必要があります。

MyQuiz変数を割り当てるのを忘れました

var myQuiz = document.getElementById( "myQuiz" );

また、URLの先頭にhttp://を追加する必要があります。それ以外の場合は、相対URLを意味するためです。

1
Larry Cinnabar