JS遍历EL表达式中的List解决办法
首先贴一下我原来的代码。
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;嗯,这样虽然是复杂了一些,不过总算是将所有的数据都显示出来了。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
