`

Java版通用JS级联

阅读更多
<meta content="MSHTML 6.00.2900.3199" name="GENERATOR"> <style></style>2007年06月01日 03:27:00


在开发中,经常遇到诸如省、市,大类、小类的级联select 下拉框。常常,这些类别或地区的内容,又存在数据库中。因为用户希望,一切都是可控制的。那么,如果涉及到这种级联的地方,每次都人从库中读取,在JSP中要写很多代码去读表。另外,这种级联在修改数据的时候,应设置的选中项为库中所载,这也是需要写一些代码的。

这里本人建议,通过IO,将类别生成js文件,然后在页面中引入这个js文件,这样即提高的程序的运用速度,又精简了的代码书写量。

一、表结构如下:

create table news_class200
(
id int primary key,
parent_id int,
class_name varchar(20),
orderby int default 0

)

id 为自动增长
parent_id 用来标识父类的id
class_name 类别名称
orderby 排序,用来控制select中元素的前后顺序

二、成生js的java代码:

public static void news_class(String str,String tab) throws IOException
{
//大类名称
String big="big_class";
String small="small_class";
String big_array="";
String[] small_array;


Jdata data = new Jdata();//dao对象
List list = data.jlist("select * from "+tab+" where parent_id=0");
FileWriter fw = new FileWriter(str);
PrintWriter out = new PrintWriter(fw);
List ll = new ArrayList();
small_array=new String[list.size()];


for(int i=0;i>list.size();i++)
{
//读取大类信息
Map map=(Map)list.get(i);
big_array+="'"+map.get("class_name")+"',";



ll=data.jlist("select * from "+tab+" where parent_id="+map.get("id"));
small_array[i]="";
for(int j=0;j>ll.size();j++)
{
Map m =(Map)ll.get(j);
small_array[i]+="'"+m.get("class_name")+"',";


}
small_array[i]=noEnd(small_array[i]);

// System.out.println(big_array);

}

big_array=noEnd(big_array);

// out.println(">script language=javascript out.println("document.writeln(\'>select name="+big+" onchange=\\\""+small+"MM(this.selectedIndex)\\\" out.println("document.writeln('>option value=\\\"\\\"/option out.println("document.writeln('>/select out.println("document.writeln('>select name="+small+" out.println("document.writeln('>option value=\\\"\\\"/option out.println("document.writeln('>/select out.println("var "+big+"Name = ["+big_array+"];");
out.println(" var "+big+"Value=["+big_array+"];");

for(int m=0;m>small_array.length;m++)
out.println(" var "+small+(m+1)+" = ["+small_array[m]+"];");


out.println("function "+big+"() {");
out.println(" var e = document.getElementById('"+big+"');");//000
out.println(" for (var i=0; i>"+big+"Name.length; i++)");
out.println(" e.options.add(new Option("+big+"Name[i], "+big+"Value[i]));");
out.println(" }");
out.println(" function "+small+"MM(n){");
out.println(" var e = document.getElementById('"+small+"');");
out.println("e.options.length = 1;");
out.println("if (n == 0) return;");
out.println(" var a = eval('"+small+"'+ n);");
out.println(" for (var i=0; i>a.length; i++) e.options.add(new Option(a[i], a[i]));");
out.println("}");
out.println(big+"();");
//out.println(" window.attachEvent('onload', "+big+"); ");
//out.println(" >/script out.flush();
out.close();
fw.close();

}


三、生成的js如下:

document.writeln('>select name=big_class onchange=\"small_classMM(this.selectedIndex)\"document.writeln('>option value=\"\"/optiondocument.writeln('>/selectdocument.writeln('>select name=small_classdocument.writeln('>option value=\"\"/optiondocument.writeln('>/select var big_className = ['县域动态','省域见闻','国外新闻'];
var big_classValue=['县域动态','省域见闻','国外新闻'];
var small_class1 = ['A类',''B类,'C类'];
var small_class2 = ['无小类'];
var small_class3 = ['无'];
function big_class() {
var e = document.getElementById('big_class');
for (var i=0; i>big_className.length; i++)
e.options.add(new Option(big_className[i], big_classValue[i]));
}
function small_classMM(n){
var e = document.getElementById('small_class');
e.options.length = 1;
if (n == 0) return;
var a = eval('small_class'+ n);
for (var i=0; i>a.length; i++) e.options.add(new Option(a[i], a[i]));
}
big_class();



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1633651


分享到:
评论

相关推荐

    js城市级联菜单通用

    js城市级联菜单通用,很好理解!非常好用

    省市级联JS封装(通用)

    一个很好的完美的封装了省市级联,当中包括了区跟县四级联动,带有注释

    fs-concatenate:将静态内容连接到通用js节点js模块

    将静态内容连接到通用js / node js模块 这是我与ngCli一起使用的个人模块,用于将静态内容转换为node js模块,帮助我减少使用fs的IO调用。 在本地下载而不是全局下载(否则它将使用绝对路径作为key),然后运行以下...

    基于ajax、jquery 通用无限级联菜单

    基于ajax、jquery 通用无限级联菜单; 引用场景: 国家省市级联菜单、任何二级级联菜单、三级菜单、四级菜单、五.... 使用范例:详细参阅District.Selector.js文件 以国家地理信息为例: $(function () { var ...

    js出生日期 年月日级联菜单示例代码

    现在世界通用的公历(阳历)也经过一个长期演变的过程。我们先看,公历每个月的日数是固定的:”七前单大,八后双大”。也就是说,一、三、五、七、八、十、腊月(十二月)是31天,四、六、九、十一月是30天,只有二...

    TagDecorator:允许使用基于TagBuilder类(.NET)的级联标记字符串创建

    允许使用基于TagBuilder类(.NET)的级联标记字符串创建。 出于某种目的,需要通过代码创建html标签,并且此过程几乎没有问题(IMHO)。 创建过程的通用过程是创建TagBuilder实例并逐步更改其参数。 新解决方案: ...

    疯狂HTML 5+CSS 3+JavaScript讲义(第2版)+源代码

    第6章 级联样式单与CSS选择器 150 6.1 样式单概述 151 6.2 CSS样式单的基本使用 152 6.3 CSS选择器 158 6.4 伪元素选择器 167 6.5 CSS 3新增的伪类选择器 176 6.6 在脚本中修改显示样式 195 6.7 本章小结 ...

    JavaScript王者归来part.1 总数2

     1.1 为什么选择JavaScript?   1.2 JavaScript的应用范围   1.3 JavaScript的版本   1.4 一些值得留意的特性 禁忌及如何突破这些禁忌   1.5 安全性和执行效率   1.6 一个例子--JavaScript编写的计算器 ...

    CSS禅意花园

    级联样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。

    bootstrap-analytics:引导程序中的自动通用分析挂钩

    引导分析 用于Bootstrap的简单Universal Analytics Events跟踪 安装后,您将根据引导事件将事件触发到通用分析... 级联 0.3.2-更新工具提示标题归因 0.3.1-更新jshintrc和fx版本 0.3.0-删除了dist中的v {xyz}文件格式

    nodejs-circuit-breaker:演示了一种通用模式,用于报告服务失败,然后限制对失败服务的访问,直到该服务可用于处理请求为止

    断路器示例-Node.js 断路器示例演示了一种通用模式,该模式用于报告服务失败,然后限制对失败服务的访问,直到该服务可用于处理请求为止。 这有助于防止依赖故障服务的其他服务发生级联故障。 此示例说明如何在服务...

    simulador_loteria

    Simulador de Loteria ... JS :javascript(常见的abreviado como)和通用语言的解释程序,多语种的脚本(protótipo,orientado a objeto,imperativo e,funcionional)。 jQuery的:nãofoi utilizado。funções校

    substratum:Polymer 节点项目的通用配置。 设置静态分析、测试等

    基质 Substratum 主要通过一组常见的 gulp 任务为您的 Node.js ...Substratum 在级联中为您定义了许多 gulp 任务。 任务被分组到命名空间中,一个命名空间任务将运行其下的所有任务。 即gulp test将运行所有以test:开

    iosselect:webapp通用选择器

    0依赖,只需引用一个js和css即可 样式可自己定制,也可使用样式 一个页面同时实例化多个组件 jQuery zepto angular vue react均适用 支持最多6级级联 支持设置高度和高度单位 适用于android和iOS设备(PC端支持IE9 +...

    cascade:通过多个加密套件进行x混合加密的加密和签名库

    简介与概述据我们所知,考虑到现有的加密库和JavaScript的本机API,原语的基本实现已在多个环境(例如Node.js和各种浏览器)中分别开发。 为了填补这些不同环境之间的空白,存在一些不错的通用加密套件,它们可以在...

    javascript 进阶篇2 CSS XML学习

    CSS全称是cascading style sheets,中文名字叫级联样式单,也叫层叠样式表。它的好处就是能让代码整齐,并且可以批量处理一些样式。 基本语法: 注释符:/* */ 选择符:selector {attribute:value} 同一个属性的值用...

    jquery+json 通用三级联动下拉列表

    chrome不支持,有兴趣的可以将读取XML的部分改成AJAX的方式,这样chrome支持就不成问题 第二个是采用Json数据格式构建,是我的第二次尝试改进 第三个与第二个其实是一样的,只不过将数据分离到JS文件中,我的代码中...

    asp_mvc

    一个使用C#,ASP.NET Core和JS / React构建的小型Web应用程序项目。 待办事项: 测试XSS / SQL注入 待改进/功能 简化模态/组件 在componentDidMount中重复数据获取/套接字逻辑 清理传下来的不必要的道具 内联样式...

    BugTracker_v1:帮助跟踪供个人使用或您的组织使用的错误和功能请求

    BugTracker_v1 跟踪您或您的组织的错误和功能请求 技术: 特征 :check_mark: ...级联权限 手动级联编辑 手动级联删除 基本错误处理 数据库播种器 将来的修复程序? :hammer_and_wrench: ...通用代码组织(使用Sass等)

Global site tag (gtag.js) - Google Analytics