找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1771|回复: 0

[分享] 织梦同一页面调用多个相同的js联动菜单

[复制链接]
发表于 2018-7-30 08:54:14 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
  1. <!--



  2. //选择地区的二级分类(非通用调用)

  3. function selNext(oj, v)

  4. {

  5.     var newobj = oj.options;

  6.     var selv = parseInt(v);

  7.     var maxv = parseInt(v) + 500;

  8.     while(newobj.length > 0) {

  9.         oj.remove(0);

  10.     }

  11.     clear(oj);

  12.     if(selv==0)

  13.     {

  14.         aOption = document.createElement('OPTION');

  15.         aOption.text = '具体地区';

  16.         aOption.value = '0';

  17.         oj.options.add(aOption);

  18.         return;

  19.     }

  20.     else

  21.     {

  22.         aOption = document.createElement('OPTION');

  23.         aOption.text = '具体地区';

  24.         aOption.value = '0';

  25.         oj.options.add(aOption);

  26.     }

  27.     var str = '';

  28.     for(i=selv+1; i < maxv; i++)

  29.     {

  30.         if(!em_nativeplaces[i]) continue;

  31.         aOption = document.createElement('OPTION');

  32.         aOption.text = em_nativeplaces[i];

  33.         aOption.value = i;

  34.         oj.options.add(aOption);

  35.     }

  36. }





  37. //子类改变事件

  38. function ChangeSon()

  39. {

  40.     /*

  41.     var emname = this.name.replace('_son', '');

  42.     var topSelObj = document.getElementById(emname+'_top');

  43.     if(this.options[this.selectedIndex].value==0) {

  44.         document.getElementById('hidden_'+emname).value = topSelObj.options[topSelObj.selectedIndex].value;

  45.     }

  46.     else {

  47.         document.getElementById('hidden_'+emname).value = this.options[this.selectedIndex].value;

  48.     }

  49.     */

  50.     // 由于支持3级联动,所以这里需要对自己改变进行重构

  51.     var emname = this.name.replace('_son', '');

  52.     // alert(emname);

  53.     if( document.getElementById(idname+'_sec') )

  54.     {

  55.         var oj = document.getElementById(idname + '_sec');

  56.     }

  57.     else

  58.     {

  59.         var oj  = document.createElement('select');

  60.         oj.name = emname + '_sec';

  61.         oj.id   = idname + '_sec';

  62.         oj.onchange = ChangeSec;

  63.     }

  64.     var v = this.options[this.selectedIndex].value;

  65.     document.getElementById('hidden_'+idname).value = v;

  66.     var newobj = oj.options;

  67.     var selarr = eval('em_'+emname+'s');



  68.     var selv = parseInt(v);

  69.     var maxv = parseInt(v) + 0.5;

  70.     // alert(maxv);

  71.     i = 0;

  72.     while(newobj && newobj.length > 0) oj.remove(0);

  73.     clear(oj);

  74.     if(selv == 0)

  75.     {

  76.         aOption = document.createElement('OPTION');

  77.         aOption.text = '请选择..';

  78.         aOption.value = '0';

  79.         oj.options.add(aOption);

  80.         return;

  81.     }

  82.     else

  83.     {

  84.         aOption = document.createElement('OPTION');

  85.         aOption.text = '请选择..';

  86.         aOption.value = '0';

  87.         oj.options.add(aOption);

  88.     }

  89.     var str = '';

  90.     var j=0;

  91.     for(i = selv + 0.001; i < maxv; i = FloatAdd(i, 0.001))

  92.     {

  93.         if(!selarr[i]) continue;

  94.         aOption = document.createElement('OPTION');

  95.         aOption.text = selarr[i];

  96.         aOption.value = i;

  97.         oj.options.add(aOption);

  98.         j++;

  99.     }

  100.     if(j > 0) document.getElementById('span_'+idname+'_sec').appendChild(oj);

  101.     else document.getElementById('span_'+idname+'_sec').innerHTML = "";

  102. }



  103. // 改变第3J的事件

  104. function ChangeSec()

  105. {

  106.     var emname = this.name.replace('_sec', '');

  107.     var topSelObj = document.getElementById(idname+'_top');

  108.     if(this.options[this.selectedIndex].value==0) {

  109.         document.getElementById('hidden_'+idname).value = topSelObj.options[topSelObj.selectedIndex].value;

  110.     }

  111.     else {

  112.         document.getElementById('hidden_'+idname).value = this.options[this.selectedIndex].value;

  113.     }

  114. }



  115. //顶级类改变事件

  116. function selNextSon()

  117. {

  118.     var emname = this.name.replace('_top', '');

  119.     var idname = this.id.replace('_top', '');

  120.     if( document.getElementById(idname+'_son') )

  121.     {

  122.         var oj = document.getElementById(idname + '_son');

  123.     }

  124.     else

  125.     {

  126.         var oj  = document.createElement('select');

  127.         oj.name = emname + '_son';

  128.         oj.id   = idname + '_son';

  129.         oj.onchange = ChangeSon;

  130.     }

  131.     var v = this.options[this.selectedIndex].value;

  132.     document.getElementById('hidden_'+idname).value = v;

  133.     var newobj = oj.options;

  134.     var selarr = eval('em_'+emname+'s');

  135.     var selv = parseInt(v);

  136.     var maxv = parseInt(v) + 500;

  137.     while(newobj && newobj.length > 0) oj.remove(0);

  138.     clear(oj);

  139.     if(selv==0)

  140.     {

  141.         aOption = document.createElement('OPTION');

  142.         aOption.text = '请选择..';

  143.         aOption.value = '0';

  144.         oj.options.add(aOption);

  145.         return;

  146.     }

  147.     else

  148.     {

  149.         aOption = document.createElement('OPTION');

  150.         aOption.text = '请选择..';

  151.         aOption.value = '0';

  152.         oj.options.add(aOption);

  153.     }

  154.     var str = '';

  155.     for(i=selv+1; i < maxv; i++)

  156.     {

  157.         if(!selarr[i]) continue;

  158.         aOption = document.createElement('OPTION');

  159.         aOption.text = selarr[i];

  160.         aOption.value = i;

  161.         oj.options.add(aOption);

  162.     }

  163.     document.getElementById('span_'+idname+'_son').appendChild(oj);

  164. }





  165. // 根据数组生成多级联动菜单

  166. function MakeTopSelect(emname,idname, selvalue)

  167. {

  168.     var selectFormHtml = '';

  169.     var aOption = null;

  170.     var selObj = document.createElement("select");

  171.     selObj.name = emname + '_top';

  172.     selObj.id   = idname + '_top';

  173.     selObj.onchange = selNextSon;

  174.     var selarr = eval('em_'+emname+'s');

  175.     // alert(selarr[1002.2]);

  176.     var topvalue = 0;

  177.     var sonvalue = 0;

  178.     var secvalue = 0;



  179.     aOption = document.createElement('OPTION');

  180.     aOption.text = '请选择..';

  181.     aOption.value = 0;

  182.     selObj.options.add(aOption);



  183.     // alert(selvalue);

  184.     if(selvalue % 500 == 0 )

  185.     {

  186.         topvalue = selvalue;

  187.     }

  188.     // 如果是小数,则依次取出顶级数值,二级数值以及3J数值

  189.     else if(!!(selvalue % 1))

  190.     {

  191.         secvalue = selvalue;

  192.         sonvalue = Math.floor(selvalue);

  193.         topvalue = sonvalue - (sonvalue % 500);

  194.         // alert(secvalue);

  195.     }

  196.     else {

  197.         sonvalue = selvalue;

  198.         topvalue = selvalue - (selvalue % 500);

  199.     }



  200.     for(i = 500; i <= selarr.length; i += 500)

  201.     {

  202.         if(!selarr[i]) continue;

  203.         aOption = document.createElement('OPTION');

  204.         if(i == topvalue) {

  205.             aOption = document.createElement('OPTION');

  206.             aOption.text = selarr[i];

  207.             aOption.value = i;

  208.             selObj.options.add(aOption);            

  209.             aOption.selected = true;

  210.         }

  211.         else {

  212.             aOption = document.createElement('OPTION');

  213.             aOption.text = selarr[i];

  214.             aOption.value = i;

  215.             selObj.options.add(aOption);

  216.         }

  217.     }

  218.     document.getElementById('span_'+idname).appendChild(selObj);



  219.     //如果子类存在值,创建子类

  220.     //if(sonvalue > 0 || topvalue > 0) {

  221.     selObj = document.createElement("select");

  222.     selObj.name = emname + '_son';

  223.     selObj.id   = idname + '_son';

  224.     selObj.onchange = ChangeSon;

  225.     aOption = document.createElement('OPTION');

  226.     aOption.text = '请选择..';

  227.     aOption.value = 0;

  228.     selObj.options.add(aOption);



  229.     //当大类有值输出子类

  230.     if(topvalue > 0)

  231.     {

  232.         var selv = topvalue;

  233.         var maxv = parseInt(topvalue) + 500;

  234.         for(i = selv + 1; i < maxv; i++)

  235.         {

  236.             if(!selarr[i]) continue;

  237.             aOption = document.createElement('OPTION');

  238.             if(i == sonvalue) {

  239.                 aOption = document.createElement('OPTION');

  240.                 aOption.text = selarr[i];

  241.                 aOption.value = i;

  242.                 selObj.options.add(aOption);

  243.                 aOption.selected = true;

  244.             }

  245.             else {

  246.                 aOption = document.createElement('OPTION');

  247.                 aOption.text = selarr[i];

  248.                 aOption.value = i;

  249.                 selObj.options.add(aOption);

  250.             }

  251.         }

  252.     }

  253.     document.getElementById('span_'+idname+'_son').appendChild(selObj);



  254.     // 若存在第3J则创建

  255.     if(secvalue > 0)

  256.     {

  257.         selObj = document.createElement("select");

  258.         selObj.name = emname + '_sec';

  259.         selObj.id   = idname + '_sec';

  260.         selObj.onchange = ChangeSec;

  261.         aOption = document.createElement('OPTION');

  262.         aOption.text = '请选择..';

  263.         aOption.value = 0;

  264.         selObj.options.add(aOption);



  265.         var selv = sonvalue;

  266.         var maxv = parseInt(sonvalue) + 0.5;

  267.         // alert(maxv);

  268.         i = 0;

  269.         for(i = selv + 0.001; i < maxv; i = FloatAdd(i, 0.001))

  270.         {

  271.             if(!selarr[i]) continue;

  272.             aOption = document.createElement('OPTION');

  273.             if(i == secvalue) {

  274.                 aOption = document.createElement('OPTION');

  275.                 aOption.text = selarr[i];

  276.                 aOption.value = i;

  277.                 selObj.options.add(aOption);

  278.                 aOption.selected = true;

  279.             }

  280.             else {

  281.                 aOption = document.createElement('OPTION');

  282.                 aOption.text = selarr[i];

  283.                 aOption.value = i;

  284.                 selObj.options.add(aOption);

  285.             }

  286.         }

  287.     }

  288.     document.getElementById('span_'+idname+'_sec').appendChild(selObj);

  289. }



  290. // 两个小数相加进度计算

  291. function FloatAdd(arg1, arg2)

  292. {

  293.     var r1,r2,m;

  294.     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}

  295.     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}

  296.     m=Math.pow(10,Math.max(r1,r2))

  297.     return (arg1*m+arg2*m)/m

  298. }



  299. //清除旧对象

  300. function clear(o)

  301. {

  302.     l=o.length;

  303.     for (i = 0; i< l; i++){

  304.         o.options[1]=null;

  305.     }

  306. }

  307. -->
复制代码


将上面代码保存为新的js文件,注意不要覆盖官方原来的,否则可能因为后续的多级联动菜单添加而反复修改文件

<script language="javascript" type="text/javascript" src="你自定义的js文件目录"></script>

这句不多说

注意在页面的运行脚本中,原来的两个参数改成了三个,第一个是联动类型的英文名称,具体请在后台查看

第二个参数是你自定义的id,防止页面上出现重复id的现象,第三个参数是初始选项

  1. <script language="javascript" type="text/javascript">MakeTopSelect("MyArea","IdName", 0);</script>
复制代码

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-24 05:21 , Processed in 0.040412 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表