使用jQuery的each 来遍历数组;$.each(user,function(n,value){ var i[]=${users[n].position}; var j=0; for(j;j<i.length;j++){ document.getElementById("i[j]").style.backgroundColor='red';} })
姐姐像你那样也取不出值,报错:position是要string型的,应该要用到15楼那个了
后台传过来的数组本质上是什么,你搞清楚没?字符串?xml字符串?json字符串?
传json数组形式的字符串就行了..前台接收到后转换成json数组..就可以循环了. var jsonstr='<%=str%>'; var json=(new Function("return "+jsonstr))();// for(var i=0,len=json.length;i<len;i++){ document.getElementById(json[i].posistion).style["color"]="red"; }
var i[]=${users[0].position}; var j=0; for(j;j<i.length;j++){ document.getElementById("i[j]").style.backgroundColor='red';} 能说一下你15楼给的和我这个有什么区别吗,菜鸟真心不懂,我这个实现不了, 这个可以实现document.getElementById("${users[0].position}").style.backgroundColor='red'; 能解释下为什么吗?大大
数组的遍历var arr = [1,2,3,4,5,6];
var arrLen = arr.length;
for(var i=0;i<arrLen;i++){
alert(arr[i]);
}这样遍历不就行了?
你自己把穿过来的数据当成json格式解析下
var STring = eval("("+str+")");
str是你接到的数据。试试这样之后,可以直接当数组操作。
document.getElementById("${users[0].position}").style.backgroundColor='red';
这样一个值取是可以的
但是这样就不行了:
var i[]=${users[0].position};
var j=0;
for(j;j<i.length;j++){
document.getElementById("i[j]").style.backgroundColor='red';}
${users[0].position}这个得到的结果是json格式或者数组吗?document.getElementById("i[j]").style.backgroundColor='red';
这个i[j]你不要加引号啊,这是个变量,你加引号就变成字符串了,会去找id=i[j]这个字符串的id,也会错啊
然后就可以直接当数组用了
var arr = [];
<%for (p in user.psosition){%>//这里我就随便写写,你用什么语言我不清楚,反正就是用服务器端的循环把数据循环出来,中间夹杂JS代码
arr.push('user.psosition.p.name');
<%}%>
</script>
这样最后在客户端生成的代码大概是这样的<script type="text/javascript">
var arr = [];arr.push('1');arr.push('2');arr.push('3');
</script>
var i[]=${users[n].position};
var j=0;
for(j;j<i.length;j++){
document.getElementById("i[j]").style.backgroundColor='red';}
})
var jsonstr='<%=str%>';
var json=(new Function("return "+jsonstr))();//
for(var i=0,len=json.length;i<len;i++){
document.getElementById(json[i].posistion).style["color"]="red";
}
<script type="text/javascript">
var arr = [];
<c:forEach items="${user.psosition}" var="obj" varStatus="stat">
arr.push('${obj.name}');
</c:forEach>
console.log(arr);
</script>
明白了么?当然,你要说你前台不是JSP页面,那我就一点办法都没了,只能用AJAX来做了。
var j=0;
for(j;j<i.length;j++){
document.getElementById("i[j]").style.backgroundColor='red';}
能说一下你15楼给的和我这个有什么区别吗,菜鸟真心不懂,我这个实现不了,
这个可以实现document.getElementById("${users[0].position}").style.backgroundColor='red';
能解释下为什么吗?大大
首先服务器接到请求,然后分析页面,发现要请求数据库,于是就去请求数据库,数据查出来以后,会根据页面里的内容来看看是否需要根据数据重新生成HTML代码,当发现有这样的代码的时候就会去用服务器端的语言(JAVA,PHP,ASP)来将数据转换成html代码,然后将最终转换好的html代码,返回给客户端,客户端再根据HTML代码,CSS,来渲染页面。document.getElementById("${users[0].position}").style.backgroundColor='red';这样之所以可以实现,就是因为服务器在页面里的内容里发现了${users[0].position},所以把这里生成最终的HTML代码(比如说这里的${users[0].position}值为0),于是这里最终到客户端的代码就是document.getElementById("0").style.backgroundColor='red';,客户端拿到HTML代码之后解析到这里发现是JS,于是开始执行JS代码,于是就将id为0的元素的背景设成红色。所以同理,你可以在页面里直接写服务器端代码,像我说的那样,重新生成JS代码,只要生成完毕,在前端随便怎么用都没问题了。
我就服了,你连一个最基本的java的forEach都不会用么?c标签啊?骚年,JSP网页里用的啊。着急。
var arr = [];//声明一个JS数组
<c:forEach items="${user}" var="obj" varStatus="stat">//这里利用c标签循环${user}
arr.push('${obj.position}');//将每个user的position放到arr中
</c:forEach>
console.log(arr);
</script>
以上是你写在jsp页面里的
最终服务器返回到客户端的代码大概是这样
<script type="text/javascript">
var arr = [];//声明一个JS数组 arr.push('0'); arr.push('1'); arr.push('2');
console.log(arr);//这里后台数据就到前台了,可以用JS代码遍历arr了
var len = arr.length;
for(var i=0;i<len;i++){
console.log(arr[i]);
}
</script>
你要是还不懂,我就真没办法了。说到底就是用JSP的c标签把数据循环出来生成JS代码而已。