2016-01-28 116 views
0

我目前正在嘗試編寫一個相對簡單的網站,但我的HTML和Javascript技能是非常基本的。基本上,我試圖做的是創建一個頁面,用戶被問到一個問題,他們通過在窗體中鍵入它來回答問題。使用外部Javascript函數時,用戶的答案與正確的答案進行比較,如果它們相同,則應該將用戶重定向到其他站點。 這裏是我的HTML文檔中的表格:重定向到外部Javascript功能中的URL不起作用

<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的。警報正常工作,所以比較字符串是可以的。我一直在Google上搜尋一段時間,並閱讀了一大堆論壇,但似乎沒有任何作用。我已經嘗試了document.location=urlwindow.replace(url)這兩個都在if-else語句和外部,並且似乎沒有任何工作,窗口只能重新加載。什麼工作是window.open(url),但我不希望它在新標籤中打開。我使用Chrome作爲我的瀏覽器,如果這是相關的。

我想要一些幫助,我一直在研究幾個小時,我很確定這可能是我犯的一個我看不見的錯誤。
乾杯!

+0

您是否在F12控制檯中收到任何錯誤消息? – maowtm

回答

1

好吧,我只是找出你的代碼的問題。使用按鈕在onClick事件上添加返回false。所以,你的代碼將成爲

<button onClick="checkAnswerExact(this.form); return false;"> Submit </button> 

,改變

window.location.href = 'https://www.reddit.com/'; 

window.location = 'https://www.reddit.com/'; 
+1

非常感謝! :)這工作! – lemmalama

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

我試過了,現在它甚至不顯示警報。 :/ – lemmalama

+0

我在你的按鈕和輸入標籤上添加了id。確保你的身份證上也有這些ID –

0

至於建議in this question,你需要調用函數與「_self」:

window.open("https://www.reddit.com/", "_self"); 

這表明它在相同的選項卡中打開,而不是打開一個新的。這與在a元素中設置target相同。

+0

謝謝你的回答:)我試過了,但它只是重新加載我的初始網站:/ – lemmalama

+0

我想我知道爲什麼,讓我做一些改變 –

+0

我相信你的表單正在被提交默認表單提交行爲。你應該防止提交表單,然後再做你想做的事情。在stackoverflow中搜索'event.preventDefault();'。希望能幫助到你。 –

0

你的按鈕是一個提交按鈕(這是,如果你沒有指定類型的默認) ,所以如果按下按鈕(並且在執行onclick處理程序之後),瀏覽器將爲您的表單發送GET請求。 只是改變你的按鈕定義爲

<button type="button" onClick="checkAnswerExact(this.form)"> Submit </button> 

它應該工作。