好的继承人我的问题..我正在尝试按下功能我已经定义了一个变量但是...我希望能够在提示使用窗口中单击按钮到网站中的提示类型.location转到哪个站点...但是当用户单击ESC或在提示中取消时它等于(null或false)。但是,当我单击取消按钮时,它会变为null,就好像它是一个href ..
function goToSite() {
var done = prompt("Please Enter a Website You'd like to go to - Or click \"Cancel\" to go back to the main page.");
window.location = done;
}
if (done === null) {
window.location = "java_doc.htm";
}
<button onclick="goToSite()"></button>
答案 0 :(得分:3)
在更改window.location之前,必须先运行条件语句,否则地址栏将指向null。此外,您的函数的右括号位于错误的位置,并且您在实际执行其操作之前关闭了函数。
function goToSite(){
var done = prompt("Please Enter a Website You'd like to go to - Or click \"Cancel\" to go back to the main page.");
if(done === null){
window.location = "java_doc.htm";
} else {
window.location = done;
}
}
答案 1 :(得分:1)
您可以执行以下操作:
function goToSite() {
var done = prompt("Please Enter a Website You'd like to go to - Or click \"Cancel\" to go back to the main page.");
window.location = (done === null) ? "java_doc.htm" : done;
}
为了更进一步,您可以验证用户是否确实输入了有效的网址。
function validUrl(textval) {
var urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
return urlregex.test(textval);
}
function goToSite() {
var done = prompt("Please Enter a Website You'd like to go to - Or click \"Cancel\" to go back to the main page.");
window.location = (done === null || !validUrl(done)) ? "java_doc.htm" : done;
}
这确保只有当用户输入有效的网址时,才会将其转到该网址。否则,它们将被重定向到您的默认页面。