首页 > 解决方案 > JS 页面不会使用 location.href 重定向?

问题描述

我正在学习 Javascript,而这个基本的重定向并没有做任何事情。

警报触发,但我尝试过的任何版本的“页面重定向”代码似乎都没有工作。我已经尝试了 location.href、document.location.href、window.location 等的每个版本......

我只想在用户输入 == '85.5' 时切换 url。但是,尽管尝试了几个小时,它还是行不通。我在这里想念什么?谢谢!

我在一个表单元素中调用这个函数,如下所示:

<form onsubmit="showInput()">
    <input type="text" id="question" name="inputz">
</form>

function showInput(){
    var InputNumber = document.getElementById("question").value;
    if(InputNumber == '85.5'){
      alert("You escaped"); //this works
      alert(InputNumber); //this works
      window.location.href ='/Survive_The_Swamp3.html'; //this does NOT work
      return false;
    }
    else {
      alert(InputNumber);
      document.location.href ="https://i.redd.it/twrza9clfsh21.jpg"; //also doesn't work
      return false;
    }
  }

标签: javascriptfunctionurlredirect

解决方案


这与window.location.href.

您没有提交表单的任何内容。所以onsubmit处理程序永远不会被调用。

当存在<input type="submit">将呈现为按钮的表单时,将提交表单。如果表格内有表格,也可以提交<button>表格。.submit()如果这些都不存在,那么除非您通过在 javascript 中调用表单的方法手动提交表单,否则永远不会提交表单。

要触发您的代码,您需要等待<input>更改事件:

<input type="text" id="question" name="inputz" onchange="showInput()">

onchange然而,事件的工作方式存在一个微妙的问题。它们在输入获得新值之前被触发。因此,当您的用户键入时,"85.5"您的事件处理程序将看到"85.". 要获取当前值,您需要从事件对象中读取它:

function showInput(event){
    var InputNumber = event.target.value;

    //...

以这种方式工作的原因onchange是允许您取消事件,从而阻止<input>获取值。例如,您可以使用此功能来防止用户输入不是数字的内容。


推荐阅读