我从后台传入数组user.psosition,然后要遍历其中的值,请问是不是要使用jquery,表示不会啊,求大神指教,详细点,小白一个。

解决方案 »

  1.   

    表示不明白
    数组的遍历var arr = [1,2,3,4,5,6];
    var arrLen = arr.length;
    for(var i=0;i<arrLen;i++){
    alert(arr[i]);
    }这样遍历不就行了?
      

  2.   

    数组不都是这种格式吗?我这只是举个例子,你把我直接写的那个,当做后台传过来的数据就好了啊。在接收到后台传过来的数据之后,用for循环遍历
      

  3.   

    不行的,js是不能直接处理后台传过来的东西的,好像要用jquery才行的
      

  4.   

    jquery没这么神,只是帮助你更方便的做原生js能做到的东西,消除浏览器差异,没什么东西原生js做不出jquery却能做的。
      

  5.   

    那是要用ajax么?js直接遍历后台传来的数组好像是不行吧?求帮忙啊,谢谢各位啊
      

  6.   

    你把传过来的数据格式贴出来啊,你说的是不是json格式的。
    你自己把穿过来的数据当成json格式解析下
    var STring = eval("("+str+")");
    str是你接到的数据。试试这样之后,可以直接当数组操作。
      

  7.   

    对好像json也可以的 但是不会啊,菜鸟呢 5555
    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';}
      

  8.   

    网上看的也是一头雾水啊,说什么js无法直接操作后台传过来的数组什么的,要用ajax什么的
      

  9.   

    把i取值时候的[]去掉,你调试一下,这个地方不会报错吗?
    ${users[0].position}这个得到的结果是json格式或者数组吗?document.getElementById("i[j]").style.backgroundColor='red';
    这个i[j]你不要加引号啊,这是个变量,你加引号就变成字符串了,会去找id=i[j]这个字符串的id,也会错啊
      

  10.   

    你后台传过来的只能是字符串..你可以传回来JSON格式的..例如[1,2,3,4]你需要把这个字符串转换成JS中可用用的对象..例如用jquery的parseJSON方法..
    然后就可以直接当数组用了
      

  11.   

    ${users[0].position}这个东西的值,贴出来看看。
      

  12.   

    。。传过来的值只有你后台的语言能认识,不过话说回来,可以通过后台的语言把数据转换成JS这边的数据。<script type="text/javascript">
    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>
      

  13.   

    你是action传值?这样获取数组<%=request.getAttribute("user.psosition")%> ,之后再循环你的数组就好了。
      

  14.   

    使用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';}
    })
      

  15.   

    姐姐像你那样也取不出值,报错:position是要string型的,应该要用到15楼那个了
      

  16.   

    后台传过来的数组本质上是什么,你搞清楚没?字符串?xml字符串?json字符串?
      

  17.   

    传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";
    }
      

  18.   

    我了个去,你写的后台,循环你也不会么。来来,给说说你后台是什么,PHP?JSP?ASP?.NET??前台页面又是什么?HTML?JSP?PHP?ASPX?
      

  19.   

    java用的struts2里面list<user>传给js的
      

  20.   

    要在js中先接受传过来的数组,再转化成json吧,怎么接受呢?
      

  21.   

    JSP页面里调用循环,循环出后台传过来的list,会么?<c:foreach>会用么?这个会用你把这个套在JS代码外面不就完了么?我在15楼说的那么明白了你还不懂?
      

  22.   

    这个我试过了,p in user.position中in是会报错的,in不是js里面这么用的吗?java不行吧,初学者真是不懂,请各位大神不要急躁,谢谢啦
      

  23.   

    25楼能指导下js中具体怎么把java传过来的数组接受呢?
      

  24.   

    ajax传过来之后JSON.parse解析一下然后不就变成一个js数组了,遍历之
      

  25.   

    32楼一下就看到文题之所在了,霸气,想问的就是怎么用ajax把值传过来,谢啦!
      

  26.   

    能不用ajax解决这个问题吗?没用过ajax,而且还要搭框架好麻烦,跪谢!
      

  27.   

    哎哟喂,我真不知道说啥好了,还在这纠结。JSP页面不是可以用<c:foreach>的么?这个你会用吧???我在15楼举的in只不过是举个例子,意思是要这里是循环的意思,你就非得照着复制下来?
    <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来做了。
      

  28.   

    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';
    能解释下为什么吗?大大
      

  29.   

    你访问页面的时候,
    首先服务器接到请求,然后分析页面,发现要请求数据库,于是就去请求数据库,数据查出来以后,会根据页面里的内容来看看是否需要根据数据重新生成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代码,只要生成完毕,在前端随便怎么用都没问题了。
      

  30.   


    我就服了,你连一个最基本的java的forEach都不会用么?c标签啊?骚年,JSP网页里用的啊。着急。
      

  31.   

    <script type="text/javascript">
    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代码而已。
      

  32.   

    我是直接用ajax去后台取,组成json格式在用js遍历的,你可疑试下