首先贴一下我原来的代码。
for(var i=0;i<number;i++){
console.log("content:"+array[i]);
var content = '${questionList[""+i+""].content}';//中间双重引号,原因暂时不是很清楚
var options = '${questionList[""+i+""].options}';
var questionId = '${questionList[""+i+""].id}';
console.log("questionId:"+questionId+"; content:"+content);
var optionArray = new Array();
optionArray = options.split("; ");
qstr = qstr + "<table><thead><tr><th>"+(i+1)+":"+content+"</th></tr></thead><tbody><tr><td><ul>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"A\">"+optionArray[0]+"</label></li>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"B\">"+optionArray[1]+"</label></li>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"C\">"+optionArray[2]+"</label></li>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"D\">"+optionArray[3]+"</label></li>"
+ "</ul></td></tr></tbody></table></br>";
//注意,上面复选框的name=questionId
}
document.getElementById("questionDiv").innerHTML=qstr;
这个代码出现了一个问题,就是说我在每次list中的值时,会很奇怪地每次都只取第一个值。
极度郁闷,暂时不清楚是什么原因,不过已经找到了替代的解决办法。
等下会贴出来。
想到一个解决办法是利用jsp中的jstl标签(博主使用的jsp哦)
下面是修改后的代码:
var number = ${questionList.size()};
var qstr = "";
var arrayContent = new Array();
<c:forEach items="${questionList}" var="t">
arrayContent.push("${t.content}"); //js中可以使用此标签,将EL表达式中的值push到数组中
</c:forEach>
var arrayOptions = new Array();
<c:forEach items="${questionList}" var="t">
arrayOptions.push("${t.options}"); //js中可以使用此标签,将EL表达式中的值push到数组中
</c:forEach>
var arrayQuestionId = new Array();
<c:forEach items="${questionList}" var="t">
arrayQuestionId.push("${t.id}"); //js中可以使用此标签,将EL表达式中的值push到数组中
</c:forEach>
for(var i=0;i<number;i++){
/* var content = '${questionList[""+i+""].content}';//中间双重引号,原因暂时不是很清楚
var options = '${questionList[""+i+""].options}';
var questionId = '${questionList[""+i+""].id}'; */
var content = arrayContent[i];
var options = arrayOptions[i];
var questionId = arrayQuestionId[i];
console.log("questionId:"+questionId+"; content:"+content);
var optionArray = new Array();
optionArray = options.split("; ");
qstr = qstr + "<table><thead><tr><th>"+(i+1)+":"+content+"</th></tr></thead><tbody><tr><td><ul>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"A\">"+optionArray[0]+"</label></li>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"B\">"+optionArray[1]+"</label></li>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"C\">"+optionArray[2]+"</label></li>"
+ " <li><label><input type=\"checkbox\" name=\""+questionId+"\" value=\"D\">"+optionArray[3]+"</label></li>"
+ "</ul></td></tr></tbody></table></br>";
//注意,上面复选框的name=questionId
}
document.getElementById("questionDiv").innerHTML=qstr;
嗯,这样虽然是复杂了一些,不过总算是将所有的数据都显示出来了。