2017-11-25 57 views
-1

我曾嘗試以下JavaScript頁面裝載機的努力有什麼不工作的緣故:JavaScript不重定向到URL在if-else的情況下

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 is not a function

  • 刪除錯誤改爲window.location.href = url,但仍然不會重定向。
+0

檢查的錯誤/ – urfusion

+1

可能的複製你的瀏覽器控制檯【如何重定向到另一個網頁?](https://stackoverflow.com/questions/503093/how-to-redirect到另一個網頁) – MaxG

回答

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按鈕。讓他們定期按鈕。你也不需要表單,你不會提交任何內容。

做這樣的事情:

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> 
+0

是的,你說得對。但是我現在試過,但它只執行'action_option.elements [0] .click',即使我點擊了第二個按鈕元素。你怎麼看? – Reiion

+0

編輯答案.. –

+0

你是對的!謝謝你解釋得很好。我正在讓它比應該更難。 – Reiion

0

嘗試 document.location ='URL';

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; 
} 
+0

這隻能刪除我的控制檯錯誤。錯誤地輸入了這個感謝指出。但仍然不重定向 – Reiion

+0

爲ya增加了一些代碼! – maxpaj

+0

謝謝maxpaj! – Reiion

0

你混淆了這裏。 window.location.href = url正在模擬用戶點擊的鏈接。 window.location = url正在傳遞用戶所需的網址。 window.location.redirect(url)使用額外的布爾參數將用戶重定向到所需的URL,指出用戶是否應從服務器加載頁面。

1

查看下面的代碼,我對你的代碼做了一些改變,它的工作正常。

\t 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); 
 
\t \t //console.log("objects_view"); 
 
     window.location.href=url; 
 
    } 
 
    else if(x=="View Detail") { 
 
     url = url + "{% url 'details_view' %}"; 
 
     alert(url); 
 
\t \t //console.log("details_view"); 
 
     window.location.href=url; 
 
    } 
 
    else if(x=="View Inventory") { 
 
     url = url + "{% url 'inventory' %}"; 
 
     alert(url); 
 
\t \t //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)"/> 
 
\t </form>

相關問題