137 lines
3.7 KiB
JavaScript
Raw Normal View History

2025-06-11 14:49:36 +08:00
//处理问题的函数, handler为回调
function handle_question(handler, question)
{
return handler(question);
}
//显示试题默认处理函数
function render_question(question, container, c)
{
c = c || '';
var con = $('#' + container);
var html = '';
var ay = new Array();
var len = question.length;
var a_len = 0;
var q = null;
var a = null;
var i = 0;
var j = 0;
var q_type = '';
var q_no = '';
var q_display = '';
var a_no = '';
var a_val = '';
var a_ele_name = '';
var a_ele_id = '';
for (i = 0; i < len; ++ i){
q = question[i];
q_type = q.q_type;
q_no = q.q_no;
q_real_no = q.q_real_no;
q_display = q.q_display;
a = q['answer'];
a_len = a.length;
ay.push("<div id='q_div_" + i +"' class='" + c + "' q_no='" + q_no +"' q_display='" + q_display + "' q_real_no='" + q_real_no + "' q_type='" + q_type +"'>");
ay.push( "<p id='p_quest_title'>" + q_no + "." + q.q_display + "</p>");
for (j = 0; j < a_len; ++ j){
switch(q_type){
case 'radio':
case 'checkbox':
{
a_ele_name = "quest_" + q.q_no;
a_ele_id = a_ele_name + "_ans_" + a[j].a_no;
a_no = a[j].a_no;
a_value = a_ele_id;
ay.push("<div>");
ay.push( "<span class='p_ans_no'>" + a_no + ")</span>");
ay.push( "<input type='" + q_type +"' name='" + a_ele_name + "' id='" + a_ele_id + "' value='" + a_value + "' a_no='" + a_no + "'/>");
ay.push( "<label for='" + a_ele_id +"'>" + a[j].a_display + "</label>");
ay.push("</div>")
break;
}
case 'textarea':
{
ay.push("<div q_type='" + q_type + "'><textarea name='" + a_ele_name + "id='" + a_ele_id + "'/></div>");
break;
}
}
}
ay.push("</div>");
}
html = ay.join(" ");
con.html(html);
}
//显示试题处理函数,handler为回调函数
function display_question(handler, question, container, c)
{
handler(question, container, c);
}
//获取答案默认处理函数
function create_answer(container, c)
{
var ay = [];
var q = null;
var q_no= '';
var q_display = '';
var q_type = '';
var a_no=''
var a_display = '';
var a_value='';
var a_checked_no = '';
var ele_label = null;
var q_idx = -1;
$('.' + c).each(function(idx, obj){
q_no = $(obj).attr('q_no');
q_display = $(obj).attr('q_display');
q_type = $(obj).attr('q_type');
q_real_no = $(obj).attr('q_real_no');
var answer = [];
var flag = false;
if (q_type == 'checkbox' || q_type == 'radio'){
//遍历input
($('div input:checked', obj)).each(function(idx, ele){
a_no = $(ele).attr('a_no');
ele_label = ele.nextSibling;
if (ele_label.tagName != 'label'){
ele_label = ele_label.nextSibling;
}
a_display = ele_label.innerHTML;
a_value = $(ele).attr('value');
a_checked_no = a_no;
var a = {a_no:a_no, a_display:a_display, a_value:a_value, a_checked_no:a_checked_no};
answer.push(a);
flag = true;
});
//判断没有选择答案处理
if (flag != true && q_idx == -1){
q_idx = idx + 1;//设置没答题的题号
}
q = {q_no:q_no, q_display:q_display, q_type:q_type, q_real_no:q_real_no, answer:answer};
}
else{
($('div textarea', obj)).each(function(idx, ele){
a_value = ele.value;
var a = {a_no:'', a_display:'', a_value:a_value, a_checked_no:''};
answer.push(a);
//判断没有填写答案处理
if (a_value == '' && q_idx == -1){
q_idx = idx + 1;//设置没答题的题号
}
});
q = {q_no:q_no, q_display:q_display, q_type:q_type, q_real_no:q_real_no, answer:answer};
}
ay.push(q);
});
return {ansdata:ay, tip_idx:q_idx};
}
//获取答案 handler为回调函数
function get_answer_data(handler, container, c)
{
return handler(container, c);
}