基本上,我有一个大字符串,我正在分裂,然后再分裂。
然后我需要使用最小的split数组将其元素放在我页面上的文本输入中。
这是我的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的多维变量。例如,使用上面的数据,第一行数据和第一个元素(问题1)将是问题[1] [1]。另一个例子是第三行数据的'wrong-answer1',这将是问题[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;
});
});
}
答案 0 :(得分:2)
在与OP进行进一步讨论后,我们修改了代码,最终得到了以下内容。基本上,他的输入数字从索引1而不是0开始,所以这是问题之一。他还尝试按id
进行选择,而有问题的输入只有name
属性。
//Loop to go over all sections in a question
for (var j = 1, len = s.length; j <= len; j++) {
$('input[name="questions[' + (i + 1) + '][' + j + ']"]').val(s[j - 1]);
}