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;

    嗯,这样虽然是复杂了一些,不过总算是将所有的数据都显示出来了。

    


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值