在if-else情况下,Javascript不会重定向到URL

时间:2017-11-25 11:46:08

标签: javascript jquery html

为了尝试不起作用,我尝试了以下javascript页面加载器:

window.location.href = url
window.location = url
window.location.assign(url)
window.location.redirect(url)

其中没有一个能够进入正确的页面。每次我点击按钮,即使我点击了第二个按钮,它仍然会抓住第一个if案例。我在使用if-else语句或重定向方式时出错了吗?

我也尝试过onclick=,与switch case配对,window.location.href仍未通过。

我的HTML:

<form id="action_option" onsubmit="redirect_to_url()" action="">
        <input type="submit" class="btn btn-primary btn-lg btn-space col-sm-3" value="View Object"/>
        <input type="submit" class="btn btn-primary btn-lg btn-space col-sm-3" value= "View Detail"/>
        <input type="submit" class="btn btn-primary btn-lg btn-space col-sm-4" value="View Inventory"/>
</form>

我的Javascript:

 function redirect_to_url(){
    var action_option = document.getElementById("action_option");
    alert(action_option);

    var url = document.URL;
    url = url.slice(0, -1);


    if (action_option.elements[0].click) {
         url = url + "{% url 'objects_view' %}";
         alert(url);
         window.location.href(url);
    }
    else if(action_option.elements[1].click) {
        url = url + "{% url 'details_view' %}";
        alert(url);
        window.location.href(url);
    }
    else {
        url = url + "{% url 'inventory' %}";
        alert(url);
        window.location.href(url);
    }
    return false;
}

编辑:

控制台错误 -

  

TypeError:window.location.href不是函数

  • 通过更改为window.location.href = url删除了错误,但仍然没有重定向。

5 个答案:

答案 0 :(得分:1)

请尝试window.location.href = url;

如果您不需要专门提供表单,我会删除表单并执行以下操作:

<input type="submit" onclick="redirect_to_url(1)" class="btn btn-primary btn-lg btn-space col-sm-3" value="View Object"/>
<input type="submit" onclick="redirect_to_url(2)" class="btn btn-primary btn-lg btn-space col-sm-3" value= "View Detail"/>
<input type="submit" onclick="redirect_to_url(3)" class="btn btn-primary btn-lg btn-space col-sm-4" value="View Inventory"/>

然后在你的Javascript中:

function redirect_to_url(submitId){

    var url = document.URL;
    url = url.slice(0, -1);

    if (submitId === 1) {
         url = url + "{% url 'objects_view' %}";
         alert(url);
         window.location.href(url);
    }
    else if(submitId === 2) {
        url = url + "{% url 'details_view' %}";
        alert(url);
        window.location.href(url);
    }
    else {
        url = url + "{% url 'inventory' %}";
        alert(url);
        window.location.href(url);
    }
    return false;
}

答案 1 :(得分:1)

您将window.location.assign()方法与window.location.href属性混淆。

window.location.href = url;  // directs the page to new location
window.location.assign(url); // navigates to a new page

请参阅docs

  1. 你的逻辑有缺陷。您正在检查某个元素是否有click成员:if (action_option.elements[0].click) { ... }。这将始终返回true。因此,您永远不会看到else部分执行。
  2. 不要使用多个submit按钮。让它们成为常规按钮。此外,您不需要表格,也不提交任何内容。
  3. 做这样的事情:

    function redirectToURL(url) {
        window.location.href = url;
    }
    
    <button type="button" onclick="redirectToURL('URL 1')">button 1</button>
    <button type="button" onclick="redirectToURL('URL 2')">button 2</button>
    <button type="button" onclick="redirectToURL('URL 3')">button 3</button>
    

答案 2 :(得分:1)

检查以下代码,我对您的代码进行了一些更改,并且工作正常。

	function redirect_to_url(x){
    /*var action_option = document.getElementById("action_option");*/
    //alert(action_option);

    var url = document.URL;
    url = url.slice(0, -1);


    if (x=="View Object") {
         url = url + "{% url 'objects_view' %}";
         alert(url);
		 //console.log("objects_view");
         window.location.href=url;
    }
    else if(x=="View Detail") {
        url = url + "{% url 'details_view' %}";
        alert(url);
		//console.log("details_view");
        window.location.href=url;
    }
    else if(x=="View Inventory") {
        url = url + "{% url 'inventory' %}";
        alert(url);
		//console.log("inventory");
        window.location.href=url;
    }
    return false;
}
   <form id="action_option"  action="">
        <input type="button" class="btn btn-primary btn-lg btn-space col-sm-3" value="View Object" onclick="redirect_to_url(this.value)" />
        <input type="button" class="btn btn-primary btn-lg btn-space col-sm-3" value= "View Detail" onclick="redirect_to_url(this.value)"/>
        <input type="button" class="btn btn-primary btn-lg btn-space col-sm-4" value="View Inventory" onclick="redirect_to_url(this.value)"/>
	</form>

答案 3 :(得分:0)

尝试 document.location ='URL';

答案 4 :(得分:0)

你在这里很困惑。  window.location.href = url正在模拟用户点击的链接。 window.location = url正在向用户转移所需的网址。 window.location.redirect(url)使用额外的布尔参数将用户重定向到所需的URL,说明用户是否应从服务器加载页面。