您现在的位置:龙卷风首页 ›› 网络编程 ›› 阅读文章

更简单的联动Select

联动Select的JavaScript代码

题启: 在网站设计中,联动Select的应用非常常见,通常省与市就是最常见的应用.有以前很长的一段时间里,一直不敢去碰这个东西,需要的时候就上网找现成的.(找现成的也有个窍门,直接在实现了这个功能的网页上查看源码即可以获得相关的javascript代码).但是使用现实的往往不尽如人意,最让人觉得窝囊的一点是需要将就它的高设计来设计数据库,以及form表单.经过一段时间的努力,终于摆脱了这个困境,下面是原创的联动select JavaScript代码.

使用方法:

1.通过服务器脚本汇入数据到两个变量中:strCountry,strPort,strCountry每项有两个字段,一个是标识码,一个是名称,用逗号隔开,项与项之间用分号隔开;strPort有每项有三个字段,一个是自身标识码,一个是strCountry的标识码,一个是名称,字段间用逗号隔开,项与项之间也用分号隔开.标识码及字段的格式没有特殊要求.

2.主调用函数是changePort(objS,objD),需要传入两个参数,objS一般是设置onchange选项的那个select,即源对象,objD是需要对态载入数据的那个select,即目标对象.如果在select中使用onchange=""的方法直接设置,objS可以使用this代替,例如:onchange="changePort(this,document.form1.select2);"

详细代码如下:

<script type="text/javascript">
var strCountry = "A6Y4T8D2Y5,马来西亚;V6T4N8X1S1,中华人民共和国";
var strPort = "D6B4A8L3G7,V6T4N8X1S1,大连;S6Q4K9U7Q1,V6T4N8X1S1,宁波港";
//处理字符串,转换为数组
var arrCountry = new Array();
var arrTemp = strCountry.split(";");
var i;
for(i=0;i<arrTemp.length;i++){
 arrCountry[i] = arrTemp[i].split(",");
}
//alert(arrCountry[0][0]+arrCountry[0][1]);

var arrPort = new Array();
arrTemp = strPort.split(";");
for(i=0;i<arrTemp.length;i++){
 arrPort[i] = arrTemp[i].split(",");
}
//alert(arrPort[0][0]+arrPort[0][2]);

function changePort(objS,objD){
 removeOptions(objD);
 var index = objS.selectedIndex;
 var codeS = objS.options[index].value;
 var j = 0;
 for(i=0;i<arrPort.length;i++){
  if(arrPort[i][1]==codeS){
   objD.options[j] = new Option(arrPort[i][2],arrPort[i][0]);
   j++;
  }
  if(j==0)
   objD.options[0] = new Option("没有可选项","0");
 }
}

function removeOptions(obj){
 for(i=0;i<obj.options.length;i++)
  obj.options[i] = null;
}
</script>

作者 不见不散 本文仅代表作者观点,与龙卷风资讯网立场无关。

我来说两句

1 楼 不见不散 发表于 2006-12-23 From IP: 218.20.233.36
太久了自己用居然还弄错了。 注释一下: 第一个变量strCountry分号间的字符排列顺序为:第一个为唯一ID号,第二个为项目名称。 第二个变量strPort分号间的字符串排列顺序为:第一个为子项的唯一ID号,第二个为母项的唯一ID号,第三个为子项的名称。
作者主页: 
内容/Content