[英]Calculator displaying
我試圖在游戲中賺錢的計算器。 我無法顯示變量,盡管我認為即時通訊使用了正確的方法。
<script type="text/javascript">
var score;
var kr;
var place;
var result;
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded(evt){
document.getElementById('myButton').addEventListener('click', krCalc, false);
}
function krCalc() {
if (place === 1 && score > 0){
kr = (score/150) * 1.5;
console.log("A score of "+score+"pts gets you "+kr+" KR while in place "+place+".");
document.getElementById("result").innerHTML = "Result: A score of "+score+"pts gets you "+kr+" KR while in place "+place+".";
}
if (place === 2 && score > 0){
kr = (score/150) * 1.2;
console.log("A score of "+score+"pts gets you "+kr+" KR while in place "+place+".");
document.getElementById("result").innerHTML = "Result: A score of "+score+"pts gets you "+kr+" KR while in place "+place+".";
}
if (place >= 3 && score > 0) {
kr = (score/150);
console.log("A score of "+score+"pts gets you "+kr+" KR while in place "+place+".");
document.getElementById("result").innerHTML = "Result: A score of "+score+"pts gets you "+kr+" KR while in place "+place+".";
}
while (kr>10){
kr = 10;
}
}
</script>
<style type="text/css">
</style>
</head>
<body>
<form>
Place<br>
<input type="text" name="place" autocomplete="off"><br>
Score<br>
<input type="text" name="score" autocomplete="off">
<input id="myButton" type="submit" value="Submit">
</form>
<p id="result">Result:</p>
</body>
</html>
盡管我不知道發生了什么,但我會在這篇文章中添加更多內容,並且一直在互聯網上試圖找出如何正確執行此操作的方法。 當單擊提交按鈕時,由於某種原因刷新頁面,我不知道為什么。
type="submit"
的輸入用於提交表單。 將其更改為type="button"
將阻止頁面提交/刷新。
當單擊提交按鈕時,由於某種原因刷新頁面,我不知道為什么。
通常會刷新頁面,因為“提交”按鈕將觸發表單提交。 普通形式如下所示:
<form class="" action="index.php" method="post">
</form>
但是,由於您沒有在<form>
標記中放置任何屬性,因此從邏輯上講, action
的值將是當前頁面,這意味着,如果您提交表單,則將一次又一次地進入頁面。
如果您不希望提交表單,請不要使用type="submit"
。 改用type="button"
。 或簡單起見,您也可以刪除<form>
標記。
type =“ submit”,它是按鈕的一種特殊類型,它嘗試發送http請求。 這就是您的網站正在加載的原因。
嘗試這個:
<button onclick="myFunction()">Click me</button>
score
和place
變量永遠不會更新,因此if語句永遠不會運行。 提交表單時,您需要更新變量。 嘗試將其添加到krCalc
函數的頂部:
place = document.getElementsByName('place')[0].value;
score = document.getElementsByName('score')[0].value;
正如其他人所說,該表格正在提交中。 默認情況下,表單的操作是當前頁面,它會重新加載頁面。
最好偵聽表單的submit
事件(而不只是單擊submit按鈕),因為當關注某個字段時,它還會捕獲按回車鍵:
<script type="text/javascript">
var score;
var kr;
var place;
var result;
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded(evt){
document.getElementById('myForm').addEventListener('submit', krCalc);
}
function krCalc(evt) {
evt.preventDefault(); // this prevents the form from causing page refresh
if (place === 1 && score > 0){
kr = (score/150) * 1.5;
console.log("A score of "+score+"pts gets you "+kr+" KR while in place "+place+".");
document.getElementById("result").innerHTML = "Result: A score of "+score+"pts gets you "+kr+" KR while in place "+place+".";
}
if (place === 2 && score > 0){
kr = (score/150) * 1.2;
console.log("A score of "+score+"pts gets you "+kr+" KR while in place "+place+".");
document.getElementById("result").innerHTML = "Result: A score of "+score+"pts gets you "+kr+" KR while in place "+place+".";
}
if (place >= 3 && score > 0) {
kr = (score/150);
console.log("A score of "+score+"pts gets you "+kr+" KR while in place "+place+".");
document.getElementById("result").innerHTML = "Result: A score of "+score+"pts gets you "+kr+" KR while in place "+place+".";
}
while (kr>10){
kr = 10;
}
}
</script>
並將ID添加到表單中:
<form id="myForm">
...
</form>
使用此選項,您可以將按鈕的type
保留為提交,因此按鈕仍將提交表單。 表單提交后(通過單擊此按鈕或在專注於字段時按Enter),將觸發JavaScript偵聽器回調。 在事件對象上調用preventDefault
可以防止表單提交事件的默認操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.