11

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

<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>
4

8 に答える 8

16

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="">
于 2012-05-18T03:36:56.130 に答える
7

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

location.href = '/some_page_on_my_site';

または:

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

または:

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

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

于 2012-05-18T03:31:33.720 に答える
2

これを実行すると:

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:// を明示的に含める必要があります。

于 2012-05-18T03:33:33.933 に答える
1

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

于 2012-05-18T03:31:53.170 に答える
1

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

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

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

于 2012-05-18T03:34:33.670 に答える
-1

問題は、それぞれのオブジェクトなしでメソッドを呼び出すことにあるはずです..以下に示すようにjavascriptを変更してください... getElementById("myQuiz") はHTMLドキュメントオブジェクトのメソッドです。操作対象のオブジェクトにアタッチする必要があります。getElementById() は JavaScript メソッドではないことに注意してください。したがって、document.getElementById("myQuiz") を実行すると、javascript にドキュメント オブジェクト (つまり HTML) に移動し、メソッド getElementById("myQuiz") を実行するように指示されます。このメソッドは JS に要素を返します。DOM では、すべての HTML 要素はオブジェクトです。したがって、HTML の要素オブジェクトである Obj_Form があります。

function checkAnswers(){    
     var Obj_Form=document.getElementById("myQuiz");
      if(Obj_Form.elements[1].checked){
          window.location = "http://www.google.com";
          }
      else{ alert("Failed");
        }
     }
于 2016-06-09T12:05:26.363 に答える