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;
嗯,这样虽然是复杂了一些,不过总算是将所有的数据都显示出来了。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。