为了尝试不起作用,我尝试了以下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
删除了错误,但仍然没有重定向。答案 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。
click
成员:if (action_option.elements[0].click) { ... }
。这将始终返回true
。因此,您永远不会看到else
部分执行。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>
答案 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,说明用户是否应从服务器加载页面。