如何用JS动态展示树形结构的平台和期限数据并更新价格?

js 遍历树形数据,动态展示平台和期限数据

要实现上述需求,可以使用 JS 遍历后台返回的树形数据,动态生成 DOM 元素来展示平台和期限选项。

// 遍历后台数据function generateOptions(data) {  for (const platform of data) {    // 创建平台选择项    const platformOption = document.createElement('option');    platformOption.value = platform.title;    platformOption.innerHTML = platform.title;    // 为期限选择项添加事件监听器    platformOption.addEventListener('change', e => {      togglePeriodOptions(e.target.value, true);    });    // 向授权平台下拉菜单中添加平台选择项    document.querySelector('.select.au_plat').appendChild(platformOption);    // 为每个平台下的期限生成选项    for (const period of platform.children) {      generatePeriodOption(period, platform.title);    }  }  // 首次加载时显示第一个平台的期限选项  togglePeriodOptions(data[0].title, false);}// 生成期限选择项function generatePeriodOption(period, platform) {  const periodOption = document.createElement('option');  periodOption.value = period.id;  periodOption.innerHTML = `${period.show_title}`;  // 为授权期限下拉菜单中添加期限选择项  document.querySelector('.select.au_per').appendChild(periodOption);  // 为期限选择项添加事件监听器  periodOption.addEventListener('change', e => {    updatePrice(platform, e.target.value);  });}// 根据选择的平台和期限更新价格显示function updatePrice(platform, periodId) {  const price = data.find(p => p.title === platform)    .children    .find(c => c.id === Number(periodId))    .price;  document.querySelector('.price').innerHTML = `¥${price}`;}// 切换期限选择项的显示function togglePeriodOptions(platform, firstLoad) {  // 获取平台下的期限选择项  const periodOptions = document.querySelectorAll('.select.au_per option');  // 隐藏所有期限选择项  periodOptions.forEach(option => {    option.style.display = 'none';  });  // 根据选定的平台显示对应的期限选择项  const periods = data.find(d => d.title === platform)?.children;  if (periods) {    periods.forEach(period => {      periodOptions.forEach(option => {        if (option.value === period.id.toString()) {          option.style.display = 'block';        }      });    });    // 首次加载时选中第一个期限    if (firstLoad) {      const firstPeriod = periods[0];      updatePrice(platform, firstPeriod.id);      document.querySelectorAll('.select.au_per option')[firstPeriod.id - 1].selected = true;    }  }}window.onload = () => {  // 调用函数遍历后台数据  generateOptions(price_list);};

在给定的 HTML 元素中,直接使用该 JavaScript 代码,即可实现树形数据遍历,动态展示平台和期限选项,以及根据用户选择更新价格显示的功能。

以上就是如何用JS动态展示树形结构的平台和期限数据并更新价格?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1561196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月22日 06:16:51
下一篇 2025年12月22日 06:16:58

相关推荐

  • 如何根据后端返回的树形结构数据,动态生成授权平台和期限选择列表并显示对应价格?

    动态生成授权平台和期限选择列表及价格显示 本文介绍如何根据后端返回的树形结构数据,动态生成授权平台和期限选择列表,并实时显示对应价格。我们将使用原生javascript实现,并提供vue.js实现的思路。 数据结构: 后端返回的数据结构如下,这是一个树形结构,包含授权平台和对应的期限选项以及价格信息…

    好文分享 2025年12月22日
    000
  • Vue.js如何根据后端数据动态生成不同类型的表单?

    基于vue.js的动态表单构建 本文介绍如何利用Vue.js框架根据后端返回的数组数据,动态生成不同类型的表单元素,并实现单选框互斥选择的功能。 核心技术: 我们主要运用Vue的组件化和动态渲染特性来实现这一目标。具体方法如下: 动态组件渲染: 通过is属性,我们可以根据后端数据中定义的类型,动态加…

    2025年12月22日
    000
  • Vue动态组件如何实现灵活的动态表单创建?

    vue动态组件:构建灵活的动态表单 利用Vue的组件和is属性,可以轻松创建动态表单。通过v-if指令判断后台数据类型,动态渲染不同的输入组件,例如input、select或自定义的checkbox组件。 例如,你可以这样定义组件: 其中,inputType是一个动态变量,根据后台数据决定渲染哪个组…

    2025年12月22日
    000
  • 如何根据选择的授权平台和期限动态计算并显示价格?

    遍历树形数据,动态展示授权平台和期限 需求 根据后端返回的树形数据,展示授权平台和授权期限用户选择不同的授权平台时,展示对应平台下的授权期限最终显示所选授权平台和期限对应的价格 后台返回的数据 price_list: [ { title: “哔哩哔哩”, children: [ { id: 1, p…

    好文分享 2025年12月22日
    000
  • Vue动态创建表单:如何根据数据类型灵活渲染input、select或自定义checkbox?

    vue.js动态表单:根据数据类型渲染不同组件 在Vue.js开发中,动态创建表单并根据数据类型灵活渲染input、select或自定义checkbox等元素是常见需求。本文介绍几种实现方法,助您高效构建动态表单。 方法一:利用组件的is属性和v-if指令 组件的is属性允许动态指定渲染的组件,结合…

    2025年12月22日
    000
  • 如何优雅地用Vue构建根据后端数据动态变化的表单?

    基于vue.js构建动态表单的最佳实践 后端返回的数组数据驱动表单的动态构建,需要一套灵活高效的方案。本文提供一种优雅的解决方案,利用Vue.js的is属性和v-if指令实现动态组件渲染。 核心思路: 通过组合is属性和v-if指令,根据后端数据动态选择并渲染不同的组件。 具体实现: 立即学习“前端…

    2025年12月22日
    000
  • 如何优雅地动态创建包含不同输入类型的表单?

    高效灵活的动态表单构建策略 构建动态表单,特别是包含多种输入类型的表单,需要巧妙的策略来保证代码的可维护性和可扩展性。 本文介绍一种基于组件和条件渲染的优雅方案。 核心思路:组件化与条件判断 组件化: 为每种输入类型 (例如文本输入框、下拉菜单、复选框) 创建独立的组件。 这使得代码更模块化,更容易…

    2025年12月22日
    000
  • 如何阻止子元素拖拽事件冒泡到父元素?

    巧妙解决子元素拖拽事件冒泡到父元素的问题 在网页开发中,经常会遇到子元素的拖拽事件冒泡到父元素的情况,这会干扰父元素的拖拽行为,造成混乱。本文提供一种有效的方法来解决这个问题,既保留父元素的拖拽功能,又阻止子元素的拖拽事件冒泡。 为了实现这一目标,我们需要采取以下步骤: 首先,启用子元素的拖拽功能,…

    2025年12月22日
    000
  • 网站移动端页面中的神秘Canvas元素是做什么用的?

    解密网站移动端页面中的神秘canvas元素 许多网站的移动端页面都包含一个隐藏的Canvas元素,通常位于HTML文档的起始位置。 您可能已经注意到这个不显眼的元素,但它究竟有什么作用呢? Canvas指纹技术:追踪与个性化 这个Canvas元素的核心功能是Canvas指纹识别 (Canvas Fi…

    2025年12月22日
    000
  • 父组件渲染子组件不一致,是什么原因导致的?

    父组件和子组件渲染不一致的常见问题排查 当父组件渲染的子组件内容与预期不符时,通常需要检查以下几个方面: 1. 子组件名称错误: 请仔细核对父组件中引用的子组件名称与实际子组件文件名是否完全一致,包括大小写。例如, 与 就可能导致渲染错误。 2. 子组件未注册: 确保已正确注册子组件。在Vue.js…

    2025年12月22日
    000
  • React父子组件引用错位的原因是什么?

    react父子组件引用错位详解及排查 在React开发中,有时会遇到父组件引用与实际渲染的子组件不符的情况,即父子组件引用错位。本文将分析此问题产生的常见原因,并提供相应的解决方法。 可能原因: 状态管理不当:当子组件依赖父组件状态时,若状态提升或状态同步机制存在问题,可能导致子组件渲染错误,从而出…

    2025年12月22日
    000
  • 父组件引用A子组件,却显示B子组件内容是什么原因?

    父组件调用a子组件却显示b子组件内容的原因分析及解决方法 上图所示问题,父组件明明引用了A子组件,页面却显示了B子组件的内容。这通常是由于组件注册或引用路径错误导致的。 一、排查组件注册问题 请确认A子组件是否已正确注册在父组件所属的Vue实例中。 组件注册通常在Vue实例的components选项…

    2025年12月22日
    000
  • Vue.js中父组件引用子组件不一致,网页显示错误子组件是什么原因?

    vue.js 项目中,父组件引用子组件错误,页面显示非预期子组件 在 Vue.js 开发过程中,经常会遇到这种情况:父组件明明 import 了 A 子组件,页面却显示了 B 子组件的内容。然而,父组件代码中并没有任何对 B 子组件的引用。 问题根源: 这种问题通常发生在 A 和 B 两个子组件的名…

    2025年12月22日
    000
  • Vue应用中意外显示子组件的根源是什么?

    vue 应用中意外渲染子组件的排查指南 在开发 Vue 应用时,有时会遇到父组件明明引用了某个子组件,页面却显示了另一个子组件的情况。本文将分析导致此问题出现的一些常见原因。 1. 组件引用路径错误: 请仔细检查父组件中引用的子组件路径是否准确无误。即使路径看起来正确,也可能存在拼写错误或路径相对性…

    2025年12月22日
    000
  • 富文本编辑器如何一键清除选中文字的样式?

    富文本编辑器:轻松清除选中文本样式 保持文档风格一致性,需要快速清除富文本编辑器中选中文本的样式。本文提供一种基于JavaScript的简便方法。 假设您的富文本编辑器包含如下元素: 以下步骤将帮助您一键清除选中文本样式: 获取选中文本: 使用window.getSelection()方法获取当前选…

    2025年12月22日 好文分享
    000
  • 富文本编辑器如何一键清除选中文本样式?

    富文本编辑器:轻松清除选中文本样式 在富文本编辑器中快速清除文本样式,是许多用户的常见需求。本文将介绍两种方法,帮助您高效实现这一功能。 方法一:利用浏览器原生功能 现代浏览器内置了强大的文本样式清除功能,无需额外插件或库。 document.execCommand(‘RemoveFormat’) …

    2025年12月22日
    000
  • 富文本编辑器中如何快速清除选中文本的局部样式?

    高效清除富文本编辑器中选中文本的局部样式 在富文本编辑器中,如何快速精准地清除选中文本的特定样式?本文将以HTML代码为例,演示如何仅清除选中文本片段的样式,避免影响周围文本。 假设我们有如下HTML结构: let editor = document.getElementsByClassName(‘…

    2025年12月22日
    000
  • 16:9屏幕设计的页面如何完美适配4:3或21:9屏幕?

    如何让16:9网页设计完美适配4:3或21:9屏幕? 许多网页设计师都面临着16:9设计在不同屏幕比例下适配的问题。本文将探讨几种可行的适配策略,帮助您解决这一难题。 优化显示区域:核心策略 适配问题的核心在于优化不同屏幕比例下的显示区域。以下策略能有效改善显示效果,但具体效果取决于实际应用场景。 …

    2025年12月22日
    000
  • 如何用JavaScript一键清除富文本编辑器中选中文本的样式?

    轻松清除富文本编辑器中选中文本样式 很多时候,我们需要在富文本编辑器中快速清除选中文本的样式,以便重新设置格式。本文提供一种简单有效的方法,只需一键即可完成。 以下代码片段演示了如何实现这个功能: 清除样式 const editor = document.querySelector(‘.editor…

    2025年12月22日
    000
  • 如何用PHP巧妙替换HTML文本内容,实现类似谷歌翻译页面的效果?

    php高效替换html文本内容,媲美谷歌翻译页面 本文介绍一种PHP方法,实现只替换HTML文本内容,保持HTML结构不变的效果,如同谷歌翻译页面般精准。 核心思路是利用JavaScript代码筛选并获取所有包含文本的节点,再逐一进行翻译和替换。 以下JavaScript代码片段可以实现此功能: A…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信