如何遍历一组问题并存储在一组用户输入中?

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>

【讨论】:

以上是关于如何遍历一组问题并存储在一组用户输入中?的主要内容,如果未能解决你的问题,请参考以下文章

在c语言中怎么输入一组数字存储在数组里

C++ 输入一组数组 找出这个数组中第2大的数 这个函数 怎么写

如何遍历一组动态表单输入并将它们插入到多个表中?

遍历文件夹,然后是子文件夹并打印带有文本文件路径的文件名

我应该如何存储用户指定的一组文件?

如何在一组对象中查找特定值?