我目前正在尝试编写一个相对简单的网站,但我的HTML和Javascript技能非常基础。基本上,我尝试做的是创建一个页面,用户通过在表单中输入问题来回答问题。使用外部Javascript函数将用户答案与正确答案进行比较,如果它们相同,则应将用户重定向到其他站点。 这是我的HTML文档中的表单:
<FORM NAME="myform" ACTION="" METHOD="GET"> Answer:
<INPUT TYPE="text" NAME="inputbox" VALUE="">
<button onClick="checkAnswerExact(this.form)"> Submit </button>
</FORM>
我的Javascript函数如下所示:
function checkAnswerExact(form){
//GET ANSWER
var x = form.inputbox.value;
//CONVERT ANSWER TO STRING
var TestAnsw =x.toString();
//DEFINE RIGHT ANSWER
var RightAnsw = "rightanswer";
//CHECK IF THEY ARE THE SAME
if (TestAnsw.toLowerCase() == RightAnsw.toLowerCase() ){
alert("The answer is right.");
window.location.href = 'https://www.reddit.com/';
} //WHAT TO DO IF ANSWER'S RIGHT
else {
alert("The answer is wrong.");
} //WHAT TO DO IF ANSWER'S WRONG
}
作为将其重定向到的示例网站,我选择了reddit。警报工作正常,因此字符串的比较是可以的。我现在已经谷歌搜索了一段时间,并通过一堆论坛阅读,但似乎没有什么对我有用。我在if-else语句中和外部尝试了document.location=url
和window.replace(url)
,似乎没有任何效果,窗口只会重新加载。工作是window.open(url)
,但我不希望它在新标签中打开。我使用Chrome作为浏览器,如果相关的话。
我喜欢一些帮助,我已经研究了几个小时,我很确定这可能是我做的一些我无法看到的错误。<登记/> 干杯!
答案 0 :(得分:2)
这应该可以解决问题。
<INPUT TYPE="text" id="inputbox" NAME="inputbox" VALUE="">
<button id="myButton">Submit</button>
<script type="text/javascript">
document.getElementById("myButton").onclick = function () {
var TestAnsw =document.getElementById("inputbox").value;
//DEFINE RIGHT ANSWER
var RightAnsw = "rightanswer";
//CHECK IF THEY ARE THE SAME
if (TestAnsw.toLowerCase() == RightAnsw.toLowerCase() )
{alert("The answer is right.");
location.href = "https://www.reddit.com/"}
//WHAT TO DO IF ANSWER'S RIGHT
else
{alert("The answer is wrong.");} //WHAT TO DO IF ANSWER'S WRONG
}
};
</script>
答案 1 :(得分:0)
根据建议in this question,您需要使用&#34; _self&#34;来调用该函数:
window.open("https://www.reddit.com/", "_self");
这表示必须在同一个标签中打开,而不是打开一个新标签。这与在target
元素中设置a
相同。
答案 2 :(得分:0)
您的按钮是一个提交按钮(如果您没有指定类型,这是默认设置),因此如果按下按钮,浏览器会为您的表单发送GET请求(并且在执行了onclick处理程序之后) )。 只需将按钮定义更改为
即可<button type="button" onClick="checkAnswerExact(this.form)"> Submit </button>
它应该有用。