我正在寻找创建一个模拟交互式javascript控制台的界面,用户可以直接在页面上打印输入。问题在于输入 - 当用户要求输入时,JS需要暂停执行,直到单击“Enter”按钮,以便可以收集输入并发送以继续输入。
目的是教授非常基本的javascript,比如教授Python,其中prompt()
函数阻止进一步执行。我知道这可以通过JS中的回调来实现,但我正在努力使其尽可能适合初学者。
这是Javascript可能实现的吗?我也知道let $go;
const $input = document.querySelector('input');
const $button = document.querySelector('button');
const $output = document.querySelector('code');
function block() {
if (!$go) {
console.log('continuing blocking');
setTimeout(block, 1000);
}
}
function output(msg) {
$output.innerHTML += msg;
}
function input(msg) {
console.log('waiting for input');
$input.placeholder = msg;
$go = false;
block();
console.log('returning');
return $input.value;
}
$button.addEventListener('click', function(){
$go = true;
console.log('clicked')
});
可以在这里工作,但我想知道是否有一种更具视觉吸引力的方法。
这是我的代码,以防它更好地了解我要做的事情:
{{1}}