如何遍历一组问题并存储在一组用户输入中?
Posted
技术标签:
【中文标题】如何遍历一组问题并存储在一组用户输入中?【英文标题】:How to iterate through an array of questions and store in an array of user input? 【发布时间】:2019-06-06 23:31:44 【问题描述】:
当我尝试将问题写入文档时,我在尝试正确遍历一系列问题时遇到问题。
我在下面包含的第一块代码基本上是我想要实现的,除非我想在没有提示的情况下使用它。
我创建了一个名为 question[]
的数组,它现在存储 3 个问题字符串。带有prompt(question[i])
的for 循环获取question[]
中的每个问题并提示用户回答。然后它将该值推送到我创建的另一个名为 character[]
的数组中。
我已经尝试了几种不同的方法来使用 .append 方法来完成这项工作,但不幸的是无济于事,我想我可以将我的陷阱定位到几个不同的领域。
在最后的代码块中,我尝试将来自question[]
的问题附加到页面上,然后让文档监听要更改的输入值,或按下 Enter(键 13)。
另外,要知道我已将所有这些都包含在以下函数中:$(document).ready(function()...
var question = [
'<br> What is your name?',
'<br> Are you man or woman?',
'<br> What is your class?'
];
var character = [];
//For Loop Using prompt()
for (i = 0; i < question.length; i++)
var input = prompt(question[i]);
character.push(input);
alert(character[i]);
//For Loop Attempting to Use html '<input>'
<input id="user-input" placeholder="Type Here"></input>
for (i = 0; i < question.length; i++)
$('#game-text').append(question[i]);
$('#user-input').onchange = function()
var userInput = input.value;
character.push(userInput);
或
for (i = 0; i < question.length; i++)
$('#game-text').append(question[i]);
$(document).keypress(function(key)
if(key.which === 13 && $('#user-input').is(':focus'))
var input = $('#user-input').val();
character.push(input);
)
我不会让循环一次显示一个问题,而是让循环一次显示所有问题,而且我似乎也无法让它接受用户输入。 我真的不确定如何处理或我所缺少的知识到底是什么,因为我似乎无法在网上找到答案。 再次总结一下我的问题是: 如何从页面本身的数组中提问,让页面等待响应,将该响应存储在另一个数组中,然后再次执行此操作,直到我浏览完整个数组? 非常感谢您的参与!非常感谢您的帮助!
【问题讨论】:
【参考方案1】:您可以使用递归方法,将在函数中提出问题的逻辑包装起来,当这个过程完成后,再用下一个问题再次调用这个函数。请注意,我已经删除了警报对话框,并在所有过程结束时将它们替换为console.log()
,只是为了稍微清理一下逻辑。
var question = [
'<br> What is your name?',
'<br> Are you man or woman?',
'<br> What is your class?'
];
var character = [];
const askQuestion = (idx) =>
if (idx >= question.length)
console.log(character);
return;
character.push(prompt(question[idx]));
askQuestion(idx + 1);
askQuestion(0);
【讨论】:
嗨@Shidersz!谢谢您的答复。我不确定这个网站上的所有礼仪规则到底是什么,因为我在这里很新,但如果我明天回来更仔细地查看你的答案,我希望你不会觉得粗鲁,因为我即将跌倒睡着了! 安心睡觉吧,有空的时候可以复习一下答案,没有规矩的。【参考方案2】:由于要在页面本身获取问卷(不带提示),可以使用jQuery事件来控制主页面问题的闪现,也可以将答案顺序记录在一个数组中。 以下是您可以执行的操作:
var question = [
'What is your name?',
'Are you man or woman?',
'What is your class?'
];
var i = 0;
var ans = [];
$(document).ready(function()
$("#ques").html(question[i]);
);
$("#answer").click(function()
ans.push($("#ans").val());
$("#ans").val("");
i++;
$("#ques").html(question[i]);
$("#answered").html(JSON.stringify(ans));
if (i == question.length)
$("#ans").hide();
$("#answer").hide();
$("#ques").html("You've answered all the questions!");
);
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="ques"></div>
<input type="text" id="ans" placeholder="Your Answer">
<button id="answer">Answer</button>
<pre id="answered"></pre>
<script src="script.js"></script>
</body>
</html>
【讨论】:
以上是关于如何遍历一组问题并存储在一组用户输入中?的主要内容,如果未能解决你的问题,请参考以下文章