[英]Javascript - Waiting for user input (callbacks)
我一直在尋找其他問題,以設法避開回調,但我對它的理解不足以在上下文中使用。 我正在寫一個使用純文本輸入的基於文本的游戲。 在需要時,我希望游戲問一個帶有不同答案的問題,然后等到給出有效答案為止。 下面是一個不起作用的示例,但解釋了我正在嘗試執行的操作。 誰能為我提供任何指導? 謝謝。
//main code pEQUIP = ["foo", "foo", "foo"]; exItem = "ball"; function prompt(numPrompts, callback) { //waits until user types a number <= numPrompts and presses enter, then returns the valid result entered } $('#gametext').append("<p>" + "What slot would you like to use to hold this item?" + "</p>"); //where a function would be stopping the code until a valid answer is given if (prompt == "1") { pEQUIP[0] = exItem; } else if (prompt == "2") { pEQUIP[1] = exItem; } else if (prompt == "3") { pEQUIP[2] = exItem; } //Just a quick n dirty way of testing it worked below: $('#gametext').append("<p>" + pEQUIP[0] + pEQUIP[1] + pEQUIP[2] + "</p>"); //parses user info unsure if this could be used or would have to be copied $(document).ready(function() { $(document).keypress(function(key) { if (key.which === 13 && $('#userinput').is(':focus')) { var value = $('#userinput').val().toLowerCase(); $('#userinput').val(""); //playerInput(value); Is usually here, would lead to //a switch which parses commands typed by the user. //Unsure if it can be used for this problem as pausing //the code I think would stop the switch? } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <body> <div id="gametext"></div> <input id="userinput"> </body>
似乎您在錯誤地考慮功能。
功能是:
()
-ae alert(string)
或myFunction()
prompt == "1"
這將行不通。 prompt
是一個函數名,不會被調用,因此您實際上是將函數本身與字符串“ 1”進行比較。 注意:同樣,非常重要的是, prompt
是默認函數的名稱(例如alert
或console
),您不應覆蓋它。 它不是該語言所認為的保留關鍵字,但是如果您正在使用任何其他庫,或者任何其他程序員都不知道它已被覆蓋並嘗試調用它,則對其進行更改將導致havok。
prompt("this is a normal prompt");
此外,您還具有文檔設置,可以在keypress
檢查文本框本身的值。 您可能應該將其更改為文本框上的事件偵聽器,但是在等待框與某些預定義輸入匹配時,沒有任何理由繼續循環超出此范圍的函數。
流程是這樣的:
如果這是您當前所需的全部,那么當單個事件偵聽器可以解決問題時,您就無需為該功能而辛苦工作:
$("#input_box").on("keypress", function(e) {
if(e.keyCode === 13) {
let value = $("#input_box").val();
if(value === "1" || value === "2" || value === "3") {
//do whatever
}
}
});
$("#input_box").on("keypress", function(e) { if(e.keyCode === 13) { let value = $("#input_box").val(); if(value === "1" || value === "2" || value === "3") { console.log("accepted"); } $("#input_box").val(""); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" id="input_box">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.