2012-03-02 44 views
1

我對使用JavaScript爲學生介紹語言的可能性感興趣。對我來說缺少的一塊是能夠提供與其他語言中可用的input()命令等效的阻塞。同步輸入可以在JavaScript中完成嗎?

使用控制檯版本的JavaScript,如SpiderMonkey,將是一個解決方案。 SpiderMonkey有一個readline()命令。但我認爲學生們會更喜歡使用Web瀏覽器運行的代碼。如果學生能夠與他們的朋友分享他們經典的「猜測1到10之間的數字」遊戲的版本,那將是很好的。

JavaScript window.prompt()命令也可以工作,但它彈出一個完全獨立的窗口的事實並不理想。我想要一個以相同方式工作的文檔內輸入字段。有沒有這樣的解決方案?

回答

1

prompt()是想到作爲閉鎖輸入方法的唯一事情。我不完全知道爲什麼你需要阻止,但也許你可以使用jQuery blocking plugin 來實現阻塞(至少是用戶界面)?

+0

jQuery阻止插件阻止網頁,但不阻止正在運行的代碼。我希望阻止代碼並讓瀏覽器繼續運行。 – 2012-03-02 17:05:29

0

您可以使用輸入文本和按鈕。當按下按鈕時獲取並處理文本並清理輸入文本以獲得新的用法。

此外,還可以考慮使用http://jsfiddle.net/

0

在Web瀏覽器,就可以使用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 |但是,我認爲我可能會建議讓學生習慣使用回調,並提供一些實用程序代碼(或者只是使用一些預先構建的東西)。他們越早習慣它,越好,並沒有那麼複雜。例如,上述的異步版本可以容易地:

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

這些學生甚至還沒有被引入編寫自己的功能。編寫自己的回調代碼還爲時過早。 我希望他們能夠編寫代碼,讓他們學習如何創建表達式,if語句以及沒有函數,回調甚至HTML的複雜性的循環。某種控制檯類型的設置,但在瀏覽器中。 – 2012-03-02 16:58:51

+0

@PaulVincentCraven:LOL!很公平。那麼'提示'將成爲最初的方式。 :-) – 2012-03-02 17:13:10

-1

NodeJs會成爲您的解決方案嗎?它支持REPL afaik。它也有一個STDIO實現

0

Synchronous Execution in JavaScript提供了一個很好的寫作和使用JavaScript執行同步操作的示例代碼。

+0

本文討論如何將代碼放在列表中,然後依次運行eval()。這很好,除非你需要分支或循環。 – 2012-03-02 17:32:29

+0

@PaulVincentCraven - 分支或循環可能必須由您的「主」進程控制,該進程將根據條件標準調用必要的函數 – 2012-03-02 17:39:39

1

我不認爲你會找到一個很好的方式來做到這一點,我不知道你應該嘗試。我認爲這是編程的一門非常基礎的課程,你希望學生能夠得到他們能夠完成某些事情的感覺。在這種情況下,我會向他們提供包含輸入字段,按鈕和掛鉤到函數的onclick處理程序的html代碼。

學生將很快學會添加輸入字段和按鈕。僅僅因爲你和我學會了用文字編程的環境並不意味着今天的學生應該這樣做。

相關問題