基本上,我有一个大字符串要拆分,然后再拆分。
然后,我需要使用最小的拆分数组将其元素放入我页面上的文本输入中。
这是我的 Javascript
var splitquestions = vals[2].split('\n');
//Loop to go through all current questions
for (var i = 0; i < splitquestions.length - 1; i++)
{
//trigger a question add where a single question data can be added into
$( "#add" ).trigger('click');
//split current question into separate items
var s = splitquestions[i].split(',');
//Loop to go over all sections in a question
var count = 0;
for(var j = 0; j < s.length; j++)
{
count = count + 1;
var qs = document.getElementById('questions[' + j +'][' + count + ']').value;
qs = s[j];
}
}
页面上会有很多问题,取决于用户想要添加多少。每个新问题块将包含一个问题、3 个错误答案和 1 个正确答案。
出错的部分在最后一个循环中。这就是我需要抓取“s”数组中的每个单独元素,并将其放置在每个文本输入中的地方。
这是原始数据在被“splitquestions”变量分割之前的显示方式:
question1,incorrect-answer1,incorrect-answer2,incorrect-answer3,correct-answer
question2,incorrect-answer1,incorrect-answer2,incorrect-answer3,correct-answer
question3,incorrect-answer1,incorrect-answer2,incorrect-answer3,correct-answer
从上面可以看出,每个问题都用换行符分隔,即 \n,然后每个单独的部分用逗号分隔。
每个问题输入都有一个分配给其 ID 的多维变量。例如,使用上面的数据,第一行数据以及第一个元素(即 question1)将是 question[1][1]。另一个示例是第三行数据中的“不正确答案1”,即问题[3][2]。第一个数字是问题编号,第二个数字是元素编号。
我希望我已经解释得足够好,因为我对如何自己解释它有点困惑,因为我是多维数组和循环内循环的新手。因此,如果您需要任何其他信息,请发表评论,我会尽力而为。
如果需要,这是动态创建问题元素的函数:
function dynamicForm () {
//set a counter
var i = $('.dynamic-input#form-step2').length + 1;
//alert(i);
//add input
$('a#add').click(function () {
$('<table><tr><td><p><span class="left"><input type="text" class="dynamic-input" name="questions[' +i +'][1]" id="' + i + '" placeholder="Question" /></span>' + '<span class="right"><input type="text" class="dynamic-input" name="questions[' +i +'][2]" id="' + i + '" placeholder="Distraction 1" /><br /><input type="text" class="dynamic-input" name="questions[' +i +'][3]" id="' + i + '" placeholder="Distraction 2" /><br /><input type="text" class="dynamic-input" name="questions[' +i +'][4]" id="' + i + '" placeholder="Distraction 3" /><br /><input type="text" class="dynamic-input" name="questions[' +i +'][5]" id="' + i + '" placeholder="Correct Answer" /><br /><a href="#">Remove</a></span></p></td></tr></table>').fadeIn("slow").appendTo('#extender');
i++;
$("a:contains('Remove')").click(function () {
$(this).parent().parent().remove();
});
return false;
});
//fadeout selected item and remove
$("#form-step2.dynamic-input").on('click', 'a', function () {
$(this).parent().fadeOut(300, function () {
$(this).empty();
return false;
});
});
}