首页 > 其他分享 >js三级联动

js三级联动

时间:2022-08-30 21:33:23浏览次数:62  
标签:hero option price js let 联动 skin array 三级

 <div class="container">
        <select name="" id="hero">
            <option value="">-请选择-</option>
        </select>
        <select name="" id="skin">
            <option value="">-请选择-</option>
        </select>
        <select name="" id="price">
            <option value="">-请选择-</option>
        </select>
    </div>

  js代码

 1 let hero_array = ['孙策', '凯', '李白']
 2 let skin_array = [
 3     ['猫狗日记', '挚爱之约', '末日机甲', '海之征途'],
 4     ['曙光守护者', '绛天战甲', '青龙志', '龙域领主'],
 5     ['范海辛', '敏锐之力', '千年之狐', '凤求凰', '鸣剑曳影']
 6 
 7 ]
 8 let price_array = [
 9     [
10         ['888'],
11         ['1688'],
12         ['1688'],
13         ['288']
14     ], [
15         ['888'],
16         ['1688'],
17         ['888'],
18         ['288']
19     ], [
20         ['288'],
21         ['488'],
22         ['888'],
23         ['1688'],
24         ['18888']
25     ]
26 ]
27 let hero = document.querySelector("#hero")
28 let skin = document.querySelector("#skin")
29 let price = document.querySelector("#price")
30 // 创建一个全局空数组,用来当做中介
31 let newArr = [];
32 // 封装一个创建option节点的函数
33 function create_option(arr, obj) {
34     for (let i = 0; i < arr.length; i++) {
35         // Option(text,value)
36         let option = new Option(arr[i], i);
37         obj.appendChild(option)
38     }
39 }
40 // 初始化,先渲染一级数组数据
41 create_option(hero_array, hero);
42 
43 hero.addEventListener('change', function () {
44     // 当hero变化时,初始化skin,price
45     skin.options.length = 1;
46     price.options.length = 1;
47     //this.value即为选中数据在数组中的下标 
48     let index = this.value;
49     newArr = price_array[index]
50     create_option(skin_array[index], skin)
51 })
52 skin.addEventListener('change', function () {
53     price.options.length = 1;
54     let index = this.value;
55     create_option(newArr[index], price)
56 })

 

标签:hero,option,price,js,let,联动,skin,array,三级
From: https://www.cnblogs.com/maxiaopi/p/16640910.html

相关文章

  • JS面试题一
    1、所有对象都有原型吗?并不是所有对象都有原型;比如使用Object.create()创建一个对象,我们传递一个参数,那么创建的对象的原型则会指向传递的那个对象;而不传参数,也就是创......
  • js 严格模式
    //js使用严格模式可以规范我们写代码//要启用严格模式,您只需要在JavaScript脚本的开头添加"usestrict";或'usestrict';指令即可,如下所示:<script>"usestrict";......
  • PDF.js 绘制pdf出现图片缺失
    问题:使用PDF.js绘制pdf时,偶尔出现了原本应该绘制图片的位置只出现了一部分或者空白原因:在测试环境加断点调试后发现PDF.js默认设置的最大图片maxImageSize为10241024,所......
  • PreloadJS预加载插件
     一个Javascript插件,可以管理和协调资源的加载进度。 CDN地址:https://cdn.baomitu.com/PreloadJS //实例LoadQueue类,得到实例对象queue。letqueue=new......
  • js实现 LRU 算法
    方式一:map实现classLRU{constructor(size){this.size=size;this.cache=newMap();}get(key){if(this.cache.has(ke......
  • geopandas 生成 geojson 文件
    创建GeoDataFrame 输出geojson文件importgeopandasss=np.stack((lon.flatten(),lat.flatten()),1)ss1=[Point(ss[0].tolist())foriinss]print(ss)......
  • vue.js3: 多张图片合并([email protected])
    一,安装用到的第三方库1,安装:liuhongdi@lhdpc:/data/vue/pdf/image2pdf$npmi-Svuedraggable@nextadded2packagesin11s2,查看已安装的版本:liuhongdi@lhd......
  • 页面滚动到指定位置——js中scrollIntoView()的用法
    element.scrollIntoView()参数默认为true1.什么是scrollIntoView?scrollIntoView是一个与页面(容器)滚动相关的API2.如何调用?element.scrollIntoView()参数默认为true参......
  • js -- setTimeout 实现倒计时不准确的问题
    setTimeout、setInterval属于定时触发器线程属于macrotask,它的回调会受到GUI渲染、事件触发、http请求、等的影响。所以这两个不适合做精准的定时。最好的方法是定时矫正......
  • JSON WEB TOKEN
    1、JSONWEBTOKEN1.1、什么是JWTJSONWebToken(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。简称JWT,在HTTP通信过程中,进......