You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反转饼图关联滑块的数值刻度 实现组合损失占比同步更新

解决方案

核心修改点

  1. 修正数值映射逻辑:你之前的总损失计算逻辑完全颠倒了,且各资产对应饼图扇区的数值计算不符合配额占比规则,修改后可满足「所有滑块拉到100%时总损失为100%」的需求
  2. 实现实时同步:给滑块的oninput事件增加饼图刷新调用,拖动过程中即可同步更新饼图扇区和总损失数值,无需等待滑块释放
  3. 修复基础代码错误:修正HTML中标签不匹配、重复ID等问题,避免渲染异常

关键代码修改

1. 滑块事件修改

给每个滑块的oninput回调增加refreshPiechart()调用,示例如下,其余4个滑块的oninput回调都按相同逻辑添加刷新调用即可:

sliderGruen.oninput = function () {
    outputGruen.innerHTML = "Perda potencial" + " " + this.value + "%";
    refreshPiechart(); // 新增此行实现拖动实时刷新
};

2. 饼图数值计算逻辑修改

修改changeColoursData函数的数值计算规则,适配20%配额的占比逻辑:

function changeColoursData() {
    // 单个资产损失占总投资组合比例 = 滑块损失比例 * 资产配额20%
    const gruenLoss = parseInt(sliderGruen.value) * 0.2;
    const gelbLoss = parseInt(sliderGelb.value) * 0.2;
    const rotLoss = parseInt(sliderRot.value) * 0.2;
    const magentaLoss = parseInt(sliderMagenta.value) * 0.2;
    const blauLoss = parseInt(sliderBlau.value) * 0.2;
    // 总损失 = 所有资产损失之和
    const totalLoss = gruenLoss + gelbLoss + rotLoss + magentaLoss + blauLoss;
    // 未损失的剩余资产占比
    const remain = 100 - totalLoss;

    var colours = {
        "Gruen": gruenLoss,
        "Gelb": gelbLoss,
        "Red": rotLoss,
        "Magenta": magentaLoss,
        "Blau": blauLoss,
        "Remain": remain
    };
    // 更新总损失展示
    var outputCyan = document.getElementById("cyanValue");
    outputCyan.innerHTML = parseInt(totalLoss) + " " + "%";
    return colours;
}

3. HTML错误修复

把所有重复的id="slidecontainer"改为class="slidecontainer"(ID在DOM中必须唯一),同时修正所有错位的</h1>标签为</h5>,避免DOM结构解析异常。

修改完成后即可实现需求:拖动滑块时对应资产的饼图扇区实时变化,所有滑块拉到100%时投资组合总损失刚好为100%。


内容的提问来源于stack exchange,提问作者user16845627

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:15:01