我是javascript window.location的新手,当我将某些短语输入到提示框中时,我试图将其用于指向某些页面。我在下面的方式是否正确?由于某些原因,它似乎不起作用。
<html>
<head>
<script>
function desiredPg() {
var pgDesired = prompt("What do you want?");
if (pgDesired == "Log In" || "log in") {
window.location = "google.com";
} else if (pgDesired == "Register" || "register") {
window.location = "apple.com";
} else {
alert("Please enter a valid page name. Do not forget to use appropriate spaces and capitalize if necessary");
}
}
</script>
</head>
<body onLoad="desiredPg()">
答案 0 :(得分:4)
如果您想转到其他主机,则需要使用绝对网址,因此只需将http://
添加到字符串中。
将字符串转换为小写,因此您只需执行一次比较。
我建议您使用哈希,这样可以清理代码并且只需要一个if
条件:
function desiredPg() {
var pgDesired = prompt("What do you want?");
var sites = {'log in': 'http://google.com', 'register':'http://apple.com'};
if (typeof sites[pgDesired.toLowerCase()] !== 'undefined') {
window.location = sites[pgDesired.toLowerCase()];
} else {
alert("Please enter a valid page name.");
}
}
答案 1 :(得分:2)
如果您将window.location
设置为'apple.com'之类的路径,则路径将被视为相对路径,表示如果您当前正在查看Google,则会搜索'google.com/path'。
尝试使用绝对路径,包括协议..
window.location = "http://apple.com";
答案 2 :(得分:0)
除了让用户记住页面名称是否一个好主意外,代码中还存在两个问题。
首先,你必须分别评估一个if语句中的每个条件,所以那些就像pgDesired=="A" || pgDesired=="B"
(尽管Jacob的解决方案更健壮)
其次,你需要使用绝对路径作为ring0提到。所以window.location = "http://apple.com";
答案 3 :(得分:0)
又一个挑剔:这种做法的“标准”方式是通过href
的{{1}}属性:
window.location
如果您想将当前位置保留在浏览器的历史记录之外,请使用window.location.href = "http://www.example.com/";
:
replace()