window.location не работает в JavaScript

Приведенный ниже код по какой-то причине не работает при попытке перенаправления. Я пробовал несколько других способов, таких как window.location.href и другие. Единственное, что работает, это window.open ("") но это открывает страницу в новом окне, когда мне нужно, чтобы он был на том же. Если я сделаю window.open("", "_self") тогда это не работает снова. Если я заменю window.location с alert он работает нормально, так что я думаю, что весь код нормальный, что-то, что мешает ему перенаправить на ту же страницу. Эта проблема также на моем 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>

8 ответов

Изменить 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="">

Когда вы меняете местоположение, вы должны дать ему абсолютный URL:

location.href = '/some_page_on_my_site';

Или же:

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

Или же:

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

Последний будет идти по http или https, в зависимости от текущей схемы. Спасибо @Derek

2018

мультибраузер: сафари, хром, firefox:

только эта работа:

window.location.replace(url)

другие параметры, которые пытаются назначить URL для window.location или window.location, не удаются

Когда вы запустите это:

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

Вы запускаете это относительно текущего requestURI. Таким образом, если вы находитесь на странице http://example.com/, вы пытаетесь перенаправить на:

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

Вместо этого просто не забудьте включить протокол:

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

Помните, что window.location - это не ваша адресная строка, она предназначена для людей, не являющихся техническими специалистами, которые вводят веб-адрес в адресную строку. При использовании window.location вы должны явно указать http://.

Ваш URL используется в window.location местный; вам нужно добавить в http:// часть URL.

Вы забыли назначить переменную myQuiz

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

также вам нужно добавить http:// в начале вашего URL. Потому что иначе это подразумевается как относительный URL.

Проблема должна заключаться в вызове метода без соответствующего объекта. измените javascript, как показано ниже... getElementById("myQuiz") - это метод объекта HTML-документа. Поэтому, когда в javascript вы используете этот метод, должны прикрепить его к объекту, с которым его действовать. Помните, что getElementById() не является методом javascript. поэтому, когда вы выполняете document.getElementById("myQuiz"), вы указываете в javascript, что нужно перейти к объекту документа (т. е. HTML), запустить метод getElementById("myQuiz"). Этот метод возвращает JS элемент. Из DOM все элементы HTML являются объектами. Итак, у нас есть Obj_Form, который является элементом объекта из HTML.

function checkAnswers(){    
     var Obj_Form=document.getElementById("myQuiz");
      if(Obj_Form.elements[1].checked){
          window.location = "http://www.google.com";
          }
      else{ alert("Failed");
        }
     }
    <script type="text/javascript">
        function checkAnswers(){   

            var myQuiz = document.getElementById( "myQuiz" );
            if (myQuiz.elements[1].checked){ alert("123");
                window.location = "www.google.com";
            }else{
                alert("Failed");
            }
        };
    </script>
  </head>
<body>
    <img src="Castle.JPG" />
    <form id="myQuiz" onsubmit="return 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>
Другие вопросы по тегам