我在jsp中有4个arraylist,我想从javascript函数中获取列表元素。
看起来从jsp arraylist获取一个元素没有问题。
但我不知道如何将多个或所有元素从jsp arraylist移动到javascript代码。
下面是我的代码
<script>
function makeTable(){
for(c=0;c<row_num;c++){
row[c]=document.createElement('tr');
for(k=0;k<cell_num;k++) {
cell[k]=document.createElement('td');
cont = document.createElement('a');
cont.href="./bbs_view.jsp?count=" + c;
cont.innerHTML ="<%=title.get(0)%>";
cell[k].appendChild(cont);
row[c].appendChild(cell[0]);
}
}
}
</script>
如您所见,上面的函数只能从jsp arraylist中获取一个元素。
有没有办法替换&lt;%= title.get(0)%&gt;到
像&lt;%= title.get(javascript var c)%&gt;?
答案 0 :(得分:2)
没有。
JSP在服务器上运行。它输出一些文字。浏览器将该文本解释为JavaScript。没有回头路。
相反,使用JSON编码器以JavaScript友好格式提供数组。在脚本中使用它,以便获得JavaScript数组,然后循环遍历。
答案 1 :(得分:1)
在你的scriplet中发出一个javascript数组(assumin titles是一个java集合的字符串),并使用你的数组的js对应部分。
<script>
var jsArray = [];
<% int i = 0; foreach (String iterat : titles) { %>
jsArray[<%= i %>] = '<%= iterat %>';
<% i++; } %>
</script>
大致不优雅(最好在自定义标签中使用它,但应该有效)。
注意:动态输入,可以在^^
中输入语法拼写错误BigMike
答案 2 :(得分:0)
好的..我终于成功了。
对于像我这样有同样问题的人,我想留下我的代码。
<%@import="java.sql.*, java.util.ArrayList"%>
<%
class bbsData{
String title;
String date;
String body;
int count;
}
ArrayList<bbsData> bbslist = new ArrayList<bbsData>();
try{
rs=stmt.executeQuery("select * from bbsdata");
while(rs.next()){
bbsData bbsOb = new bbsData();
bbsOb.date = rs.getString(1);
bbsOb.title= rs.getString(2);
bbsOb.body = rs.getString(3);
bbsOb.count = Integer.parseInt(rs.getString(4));
bbslist.add(bbsOb);
}
stmt.close();
Conn.close();
}catch(Exception e){
out.println(e);
}
<script>
var jsArray = [];
function dbData(date, title, body, count){
this.date = date;
this.title = title;
this.body = body;
this.count = count;
}
function setJsArry(){
<% int i = 0;
for (bbsData iterat : bbslist) {
iterat = new bbsData();
iterat = bbslist.get(i);
%>
date = '<%= iterat.date %>';
title = '<%= iterat.title %>';
body = '<%= iterat.body %>';
count = '<%= iterat.count %>';
jsArray[<%=i%>] = new dbData(date, title, body, count);
<%i++; } %>
}
function makeTable(){
setJsArry();
for(c=0;c<row_num;c++){
row[c]=document.createElement('tr');
for(k=0;k<cell_num;k++) {
cell[k]=document.createElement('td');
cont = document.createElement('a');
cont.href="./bbs_view.jsp?count=" + c;
cont.innerHTML =jsArray[c].title;
cell[k].appendChild(cont);
row[c].appendChild(cell[k]);
}
}
}
</script>