在制作项目的时候,总会用到地区·产品分类等的无限联动,为了复用性,写出了一个可以复用的JS文件
文件分为两个部分
1)JS复用文件
2)数据文件
在HTML中引用
- <html>
- <script src='jquery.js'></script>
- <!--数据文件-->
- <script src='area.js'></script>
- <h1>无限联动</h1>
- <!--JS文件输出文件-->
- <script src='wxldmut.js'></script>
- </html>
JS文件写出了两个
输出为单选 wxldid.js
- var sels = new Array();
- var divname = 'sel-div';
- var objindex = 1;
- var sels;
- selsRef();
- document.write("<div name='"+divname+"'>"+ sels +"</div>");
- writeFirstSelect();
- function selsRef()
- {
- sels = "<select id='sel-"+objindex+"' name='select' οnchange='selIndexChange(this)'>"+optionsstr+"</select>";
- }
- function writeFirstSelect()
- {
- selsRef();
- var flag = 0;
- $('div[name='+ divname +'] select[name^=sel]:first option').each(function(index){
- if(parseInt($(this).attr('name')) == 0 || parseInt($(this).val()) == 0)
- flag++;
- else
- $(this).replaceWith('');
- });
- }
- function selIndexChange(obj)
- {
- var objname = $(obj).attr('id');
- var objvalue = $(obj).val();
- var flag = 0;
- if(objvalue != 0)
- {
- $('select[id='+objname+']~select[id^=sel]').replaceWith('');
- var names = objname.split('-');
- objindex = parseInt(names[1]) + 1;
- selsRef();
- var divhtml = $('div[name='+ divname +']').html();
- $('div[name='+ divname +']').html(divhtml + sels);
- $('div[name='+ divname +'] select[id^=sel]:last option').each(function(index){
- if(parseInt($(this).attr('name')) == parseInt(objvalue) || parseInt($(this).val()) == 0)
- {
- if(parseInt($(this).val()) != 0)
- flag++;
- }
- else
- $(this).replaceWith('');
- });
- if(flag == 0)
- $('div[name='+ divname +'] select[id^=sel]:last').replaceWith('');
- }
- else
- {
- $('select[name='+objname+']~select[id^=sel]').replaceWith('');
- }
- }
输出为多选 wxldmut.js
- var sels = new Array();
- var divname = 'sel-div';
- var objindex = 1;
- var selectstyle = "style='width:110px;'";
- var sels;
- selsRef();
- document.write("<div name='"+divname+"'>"+ sels +"</div>");
- writeFirstSelect();
- function selsRef()
- {
- sels = "<select id='sel-"+objindex+"' name='select' multiple='multiple' "+selectstyle+" size='8' οnchange='selIndexChange(this)'>"+optionsstr+"</select>";
- }
- function writeFirstSelect()
- {
- selsRef();
- var flag = 0;
- $('div[name='+ divname +'] select[name^=sel]:first option').each(function(index){
- if(parseInt($(this).attr('name')) == 0)
- flag++;
- else
- $(this).replaceWith('');
- });
- }
- function selIndexChange(obj)
- {
- var objname = $(obj).attr('id');
- var objvalue = $(obj).val();
- var flag = 0;
- if(objvalue != 0)
- {
- $('select[id='+objname+']~select[id^=sel]').replaceWith('');
- var names = objname.split('-');
- objindex = parseInt(names[1]) + 1;
- selsRef();
- var divhtml = $('div[name='+ divname +']').html();
- $('div[name='+ divname +']').html(divhtml + sels);
- $('div[name='+ divname +'] select[id^=sel]:last option').each(function(index){
- if(parseInt($(this).attr('name')) == parseInt(objvalue))
- {
- flag++;
- }
- else
- $(this).replaceWith('');
- });
- if(flag == 0)
- $('div[name='+ divname +'] select[id^=sel]:last').replaceWith('');
- }
- else
- {
- $('select[name='+objname+']~select[id^=sel]').replaceWith('');
- }
- }
数据文件的格式如下
- var optionsstr = "<option value='0'>请选择</option><option name='0' value='1'>a</option><option name='0' value='2'>a</option><option name='1' value='5'>asd</option><option name='2' value='6'>123</option><option name='5' value='8'>jhg</option><option name='0' value='9'>asd</option><option name='0' value='10'>123ff</option><option name='10' value='11'>asd</option><option name='9' value='12'>xcv</option><option name='10' value='13'>45678</option><option name='13' value='14'>a</option><option name='13' value='15'>b</option><option name='13' value='16'>c</option><option name='13' value='17'>d</option><option name='13' value='18'>e</option><option name='13' value='19'>r</option><option name='13' value='20'>t</option><option name='13' value='21'>y</option><option name='0' value='22'>ffff</option><option name='15' value='24'>c</option><option name='15' value='25'>b</option><option name='15' value='26'>c</option><option name='25' value='27'>a</option><option name='25' value='28'>b</option><option name='25' value='29'>c</option><option name='28' value='30'>a</option><option name='28' value='31'>b</option><option name='28' value='32'>c</option><option name='2' value='33'>lz</option><option name='2' value='34'>zt</option><option name='2' value='35'>gl</option><option name='1' value='36'>cnv</option><option name='31' value='38'>lzyes</option><option name='31' value='39'>ztno</option><option name='31' value='40'>glyesno</option><option name='1' value='41'>a</option><option name='1' value='42'>a</option><option name='1' value='43'>a</option><option name='1' value='44'>a</option><option name='1' value='45'>a</option><option name='1' value='46'>a</option><option name='1' value='47'></option><option name='10' value='48'>lz</option><option name='10' value='49'>gl</option><option name='10' value='50'>Zt</option><option name='39' value='51'>12345</option>";
为了方便使用数据文件,制作了一个文件生成器,可在附件中下载
转载于:https://blog.51cto.com/pandorac/353539