今天 帮朋友写的,联动的方式有很多,写这个的时候主要考虑,让服务端来做更多的工作,作为示例 test方法只有6行代码,浏览器的执行速度应该是非常快的,而且也不占浏览器的内存,最近写javascript,经常遇到性能问题,所以从现在起就的注意了
下面的代码比较简单,实际上依赖一个命名规则和克隆对象的方法,克隆其实不是必要的,但我觉得这样很真观。如果数据量大的话可以不克隆直接隐藏显示就可以了,后台做下简单的逻辑判断。
<
html
>
< head >
< script type = " text/javascript " >
function $(id){
return document.getElementById(id);
}
function test(){
var eChild = $( ' child_ ' + $( " parent " ).value).cloneNode( true );
eChild.name = " child " ;
eChild.style.display = "" ;
eChild.value = " c2 "
$( " cspan " ).innerHTML = "" ;
$( " cspan " ).appendChild(eChild);
}
function init(){
test()
}
</ script >
</ head >
< body onload = " init(); " >
<%= request.getParameter( " child " ) %>
< form method = " post " >
< select id = " parent " onchange = " test(); " >
< option value = " 1 " > a </ option >
< option value = " 2 " > b </ option >
< option value = " 3 " > c </ option >
</ select >
< span id = " cspan " ></ span >
< select id = " child_1 " style = " display: none; " >
< option value = " c1 " > ca_a </ option >
< option value = " c2 " > cb_a </ option >
< option value = " c3 " > cc_a </ option >
</ select >
< select id = " child_2 " style = " display: none; " >
< option value = " c1 " > ca_b1 </ option >
< option value = " c2 " selected > cb_b2 </ option >
< option value = " c3 " > cc_b3 </ option >
</ select >
< select id = " child_3 " style = " display: none; " >
< option value = " c1 " > ca_c </ option >
< option value = " c2 " > cb_c </ option >
< option value = " c3 " > cc_c </ option >
</ select >
< input type = " submit " />
</ form >
</ body >
</ html >
< head >
< script type = " text/javascript " >
function $(id){
return document.getElementById(id);
}
function test(){
var eChild = $( ' child_ ' + $( " parent " ).value).cloneNode( true );
eChild.name = " child " ;
eChild.style.display = "" ;
eChild.value = " c2 "
$( " cspan " ).innerHTML = "" ;
$( " cspan " ).appendChild(eChild);
}
function init(){
test()
}
</ script >
</ head >
< body onload = " init(); " >
<%= request.getParameter( " child " ) %>
< form method = " post " >
< select id = " parent " onchange = " test(); " >
< option value = " 1 " > a </ option >
< option value = " 2 " > b </ option >
< option value = " 3 " > c </ option >
</ select >
< span id = " cspan " ></ span >
< select id = " child_1 " style = " display: none; " >
< option value = " c1 " > ca_a </ option >
< option value = " c2 " > cb_a </ option >
< option value = " c3 " > cc_a </ option >
</ select >
< select id = " child_2 " style = " display: none; " >
< option value = " c1 " > ca_b1 </ option >
< option value = " c2 " selected > cb_b2 </ option >
< option value = " c3 " > cc_b3 </ option >
</ select >
< select id = " child_3 " style = " display: none; " >
< option value = " c1 " > ca_c </ option >
< option value = " c2 " > cb_c </ option >
< option value = " c3 " > cc_c </ option >
</ select >
< input type = " submit " />
</ form >
</ body >
</ html >