当前位置:首页 > JavaScript

js 实现级联

2026-02-01 15:21:18JavaScript

级联选择实现方法

数据准备

数据结构通常采用嵌套对象或数组形式,例如:

js 实现级联

const data = [
  {
    value: 'province1',
    label: '省份1',
    children: [
      {
        value: 'city1',
        label: '城市1',
        children: [
          { value: 'district1', label: '区县1' }
        ]
      }
    ]
  }
]

动态渲染实现

通过事件监听和DOM操作实现级联更新:

js 实现级联

function renderCascade(container, data, level = 0) {
  const select = document.createElement('select');
  select.addEventListener('change', (e) => {
    const nextContainer = document.getElementById(`level-${level+1}`);
    if(nextContainer) nextContainer.innerHTML = '';

    const selected = data.find(item => item.value === e.target.value);
    if(selected && selected.children) {
      const newContainer = document.createElement('div');
      newContainer.id = `level-${level+1}`;
      container.parentNode.appendChild(newContainer);
      renderCascade(newContainer, selected.children, level+1);
    }
  });

  data.forEach(item => {
    const option = document.createElement('option');
    option.value = item.value;
    option.textContent = item.label;
    select.appendChild(option);
  });

  container.appendChild(select);
}

使用框架实现(Vue示例)

基于Vue的响应式特性简化实现:

<template>
  <div v-for="(select, index) in selects" :key="index">
    <select v-model="selectedValues[index]" @change="loadNext(index)">
      <option v-for="item in select.options" :value="item.value">
        {{ item.label }}
      </option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selects: [{ options: [] }],
      selectedValues: []
    }
  },
  methods: {
    loadNext(index) {
      this.selects = this.selects.slice(0, index+1);
      const current = this.findNode(this.selectedValues);
      if(current && current.children) {
        this.selects.push({
          options: current.children
        });
      }
    }
  }
}
</script>

性能优化建议

避免每次重新渲染整个级联组件,应该:

  • 使用虚拟DOM或差异化更新
  • 对大数据集采用分页加载
  • 实现缓存机制存储已加载数据

典型应用场景

  • 省市区三级联动选择
  • 商品分类多级筛选
  • 组织架构树形选择

实现时需注意处理异步数据加载、默认值设置和表单验证等常见需求。根据具体项目需求,可选择纯DOM操作或框架方案实现。

标签: 级联js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…