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,具体取决于当前方案。谢谢@Derek

于 2012-05-18T03:31:33.720 回答
3

2018

多浏览器:safari、chrome、firefox:

只是这项工作:

window.location.replace(url)

尝试将 url 分配给 window.location 或 window.location 的另一个选项失败

于 2018-07-06T08:35:42.787 回答
2

当你运行这个:

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://。

于 2012-05-18T03:33:33.933 回答
1

您使用的网址window.location是本地网址;您需要添加http://部分网址。

于 2012-05-18T03:31:53.170 回答
1

您忘记分配 myQuiz 变量

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

您还需要http://在网址的开头添加。因为,否则它意味着相对 url。

于 2012-05-18T03:34:33.670 回答
-1
    <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>
于 2014-10-16T02:02:36.603 回答
-1

问题应该是在没有相应对象的情况下调用方法.. 将 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");
        }
     }
于 2016-06-09T12:05:26.363 回答