Javascript 如何在多个元素之间分配百分比?

Javascript 如何在多个元素之间分配百分比?,javascript,jquery,math,Javascript,Jquery,Math,我希望有“n”个滑块共享100%,最初我有如下数据: <input type="number" id="a" min="0" max="100" value="60"/> <input type="number" id="b" min="0" max="100" value="30"/> <input type="number" id="c" min="0" max="100" value="10"/> var val_change = 100; for

我希望有“n”个滑块共享100%,最初我有如下数据:

<input type="number" id="a" min="0" max="100" value="60"/>
<input type="number" id="b" min="0" max="100" value="30"/>
<input type="number" id="c" min="0" max="100" value="10"/>
var val_change = 100;

for (var i = 0; i < sliders.length; i++) {
    val_change -= parseFloat($(sliders[i]).val());
}

所以如果a从60%下降到40%,我希望b和c各增加10%。是否有一种已知的算法可以在不覆盖之前的#b和#c值的情况下分配百分比

这是一个不工作的,
和一个工作。您需要以某种方式保留更改前的总金额。您可以将一个数据值附加到每个输入元素,但由于您总是回滚到分布在输入之间的甚至100个值,因此仅将其用作如下参考非常方便:

<input type="number" id="a" min="0" max="100" value="60"/>
<input type="number" id="b" min="0" max="100" value="30"/>
<input type="number" id="c" min="0" max="100" value="10"/>
var val_change = 100;

for (var i = 0; i < sliders.length; i++) {
    val_change -= parseFloat($(sliders[i]).val());
}
var val_change=100;
对于(变量i=0;i
代码循环通过所有输入,并从初始值100中减去该值。如果按下输入字段中的向上键,将返回
-1
,即将此数字除以除激活输入外的输入数,即可得到需要从其他输入中删除的数量。此计算将替换增量计算

小提琴:


您可能需要检查输入是否达到0或100,并采取相应措施。

描述
#a
如何减少到
40%
宽度。您的示例与您所说的不一致。在30%和10%中分别添加10%并不能保持它们之间的比例。40/20 != 30/10。如果要保持私有值的比率,#b和#b应分别降低到20%和7%。你想要哪一个,分享100%还是保持比例?哦,对不起;不,不是为了维持比率,而是为了实际“分享”100%,如果a从60%增加到40%,那么20%应该同样适用于b和c(各10%);你的答案很好,谢谢!