可以在JavaScript中完成同步输入吗?

时间:2012-03-02 15:50:35

标签: javascript

我对使用JavaScript作为学生入门语言的可能性很感兴趣。对我来说,缺少的部分是能够提供与其他语言中可用的input()命令等效的阻塞。

使用仅限控制台的JavaScript版本(如SpiderMonkey)将是一种解决方案。 SpiderMonkey有一个readline()命令。但我认为学生们对在网络浏览器中运行的代码更感兴趣。如果学生可以与他们的朋友分享经典的“猜测1到10之间的数字”游戏,那将是很好的。

JavaScript window.prompt()命令也可以工作,但它弹出一个完全独立的窗口这一事实并不理想。我想要一个文档输入字段以相同的方式工作。有这样的解决方案吗?

6 个答案:

答案 0 :(得分:1)

prompt()是唯一可以想到的阻塞输入法。我不知道为什么你需要阻止它,但也许你可以使用jQuery blocking plugin 实现阻止(至少是UI)?

答案 1 :(得分:1)

我认为你不会找到一个好方法,我不确定你应该尝试。我认为这是编程中非常基础的课程,你希望学生能够感受到他们能够完成某些事情。在这种情况下,我会为他们提供html代码,其中包含输入字段,按钮和已连接到函数的onclick处理程序。

学生将很快学会添加输入字段和按钮。仅仅因为你和我学会了在纯文本环境中编程并不意味着今天的学生应该这样做。

答案 2 :(得分:0)

您可以使用输入文本和按钮。当按下按钮时,获取并处理文本并清理输入文本以获得新用法。

此外,您可以考虑使用http://jsfiddle.net/

答案 3 :(得分:0)

在网络浏览器中,您可以使用prompt。它非常老式(如alert)并且同步地表现(几乎完全)。所以:

var str;
str = prompt("Enter some text: ", "");
console.log("You entered '" + str + "'");
str = prompt("Enter some more text: ", "");
console.log("You entered '" + str + "'");

Live example | Live source

但是,相反,我认为我可能会建议让学生习惯使用回调,并提供一些实用程序代码(或者只使用一些预制的东西)。他们越早习惯它就越好,而且并不复杂。例如,上述的异步版本很容易:

asynchronousPrompt("Enter some text: ", "", function(text) {
    console.log("You entered '" + text + "'");
    asynchronousPrompt("Enter some more text: ", "", function(text) {
        console.log("You entered '" + text + "'");
    });
});

答案 4 :(得分:0)

Synchronous Execution in JavaScript提供了一个很好的编写和示例代码,用于使用JavaScript执行同步操作。

答案 5 :(得分:-1)

NodeJs会成为您的解决方案吗?它支持REPL afaik。它还有一个STDIO实现