我正在使用html和jquery创建一个学习模块。这是一系列情况,其中包含带有动态生成的“选择”元素和复选框的表单。通过以下功能,它们会在加载时附加到dom上的id上:
为清楚起见:b =分支,s =情况,a =答案,t =类型,l =标签,f =形式。
function appendAnswers() {
for (var i = 0; i <= data.length - 1; i++) {
if (data[i].b.indexOf(selectedBranch) !== -1 && data[i].s === situationToLoad) {
var checkBox = '<span class="checkmark"></span><span>' + data[i].l + '</span>';
var select = '<option value="' + data[i].a[0] + '"> Select Answer </option><option value="' + data[i].a[1] + '">' + data[i].a[0] + '</option><option value="' + data[i].a[2] + '">' + data[i].a[1] + '</option><option>' + data[i].a[2] + '</option>';
(data[i].t === 'dropdown' ? $('#f' + data[i].f + data[i].q).append(select) : $('#f' + data[i].f + data[i].q).append(checkBox));
}
}
}
用户选择答案,然后单击检查按钮以检查答案。即使在以表单编号作为参数的html中,这也是onclick。
示例:onclick =“ checkAnswers('3849')”
如果正确,则将背景色设置为绿色,否则使用“正确”和“不正确”类将其设置为红色。
检查功能如下:
function checkAnswers(formToCheck) {
for (var i = 0; i <= data.length - 1; i++) {
if (data[i].b.indexOf(selectedBranch) !== -1 && data[i].s === situationToLoad && data[i].f === formToCheck) {
var currentQuestion = data[i].f + data[i].q;
var selectedAnswer = $('#f' + currentQuestion + ' > option:selected');
if (data[i].t === 'dropdown') {
if (selectedAnswer.text() === data[i].c) {
$('#f' + currentQuestion).removeClass('incorrect').addClass('correct');
} else {
$('#f' + currentQuestion).removeClass('correct').addClass('incorrect');
}
} else if (data[i].t === 'checkbox') {
$('#f' + currentQuestion + '>.checkmark').removeClass('incorrect');
if ($('#f' + currentQuestion + '>input').is(':checked').toString() === data[i].c) {
$('#f' + currentQuestion + '>.checkmark').addClass('correct');
} else {
$('#f' + currentQuestion + '>.checkmark').addClass('incorrect');
}
} else {
console.log("Error: The answer's type is undefined!");
}
}
}
}
我的问题是,当我单击按钮以检查我的答案时(当然,仅在IE中...:/),什么都没有发生,并且控制台中也没有任何错误。我在控制台上记录了不正确/正确的消息,看来它可以正常工作,但是“正确/不正确”的类并未添加到元素中。你们以前有没有处理过这样的错误?
谢谢!
*编辑添加了变量,以提高可读性