重定向到外部Javascript函数中的URL不起作用

Redirecting to URL in external Javascript function not working

本文关键字:URL 不起作用 函数 外部 Javascript 重定向      更新时间:2023-09-26

我目前正在尝试编写一个相对简单的网站,但我的HTML和Javascript技能非常基础。基本上,我要做的是创建一个页面,其中向用户询问一个问题,他们通过将其键入表单来回答。使用外部Javascript函数,用户的答案与正确的答案进行比较,如果它们相同,则用户应该被重定向到不同的站点。这是我的HTML文档中的表单:

<FORM NAME="myform" ACTION="" METHOD="GET"> Answer:
    <INPUT TYPE="text" NAME="inputbox" VALUE="">
    <button onClick="checkAnswerExact(this.form)"> Submit </button> 
</FORM>

我的Javascript函数看起来像这样:

function checkAnswerExact(form){ 
  //GET ANSWER
  var x = form.inputbox.value;
  //CONVERT ANSWER TO STRING
  var TestAnsw =x.toString();
  //DEFINE RIGHT ANSWER
  var RightAnsw = "rightanswer";
  //CHECK IF THEY ARE THE SAME
  if (TestAnsw.toLowerCase() == RightAnsw.toLowerCase() ){ 
    alert("The answer is right.");
    window.location.href = 'https://www.reddit.com/';
  } //WHAT TO DO IF ANSWER'S RIGHT
  else {
    alert("The answer is wrong.");
  } //WHAT TO DO IF ANSWER'S WRONG  
}

作为将其重定向到的示例站点,我选择了reddit。警报工作正常,因此字符串的比较是可以的。我已经在谷歌上搜索了一段时间,并阅读了一堆论坛,但似乎没有什么对我有用。我已经尝试了document.location=url,并且在if-else语句内部和外部window.replace(url),似乎没有任何效果,窗口只会重新加载。有效的是window.open(url),但我不希望它在新选项卡中打开。我正在使用Chrome作为我的浏览器,如果相关的话。

我需要一些帮助,我已经研究了几个小时,我很确定这可能是我犯的一些我看不到的错误。
干杯!

好吧,我只是弄清楚了你的代码的问题。使用按钮在 onClick 事件上添加返回假。所以你的代码会变成

<button onClick="checkAnswerExact(this.form); return false;"> Submit </button>

并且还更改

 window.location.href = 'https://www.reddit.com/';

 window.location = 'https://www.reddit.com/';

这应该可以解决问题。

<INPUT TYPE="text" id="inputbox" NAME="inputbox" VALUE="">
<button id="myButton">Submit</button>
<script type="text/javascript">
   document.getElementById("myButton").onclick = function () {
       var TestAnsw =document.getElementById("inputbox").value;
       //DEFINE RIGHT ANSWER
       var RightAnsw = "rightanswer";
       //CHECK IF THEY ARE THE SAME
       if (TestAnsw.toLowerCase() == RightAnsw.toLowerCase() )
          {alert("The answer is right.");
          location.href = "https://www.reddit.com/"} 
      //WHAT TO DO IF ANSWER'S RIGHT
      else
      {alert("The answer is wrong.");} //WHAT TO DO IF ANSWER'S WRONG
    }
};
</script>

如本问题所述,您需要使用"_self"调用该函数:

window.open("https://www.reddit.com/", "_self");

这表明它必须在同一选项卡中打开,而不是打开一个新选项卡。这与在元素中设置target a相同。

您的按钮是一个提交按钮(如果未指定类型,则为默认值),因此如果您按下按钮(并在执行 onclick 处理程序之后),浏览器会为您的表单发送 GET 请求。只需将按钮定义更改为

<button type="button" onClick="checkAnswerExact(this.form)"> Submit </button>

它应该有效。