Javascript 相关输入类型范围的右算法

Javascript 相关输入类型范围的右算法,javascript,range,percentage,Javascript,Range,Percentage,如何计算滑块总数为100%的百分比(即) 在本例中,当我将第二个滑块的值设置为95%时,其他滑块的值设置为3%。如何修复它 // Calculate fraction if (sum <= 0) { fraction = 1 / (depends.length - 1) } else { fraction = val / sum; } // The last element will correct rounding errors if (i >= depends.leng

如何计算滑块总数为100%的百分比(即

在本例中,当我将第二个滑块的值设置为95%时,其他滑块的值设置为3%。如何修复它

// Calculate fraction
if (sum <= 0) {
  fraction = 1 / (depends.length - 1)
} else {
  fraction = val / sum;
}

// The last element will correct rounding errors
if (i >= depends.length - 1) {
  val = max - partial;
} else {
  val = Math.round(delta * fraction);
  partial += val;
}
//计算分数
如果(总和=长度-1){
val=最大-部分;
}否则{
val=数学圆(δ*分数);
部分+=val;
}

如果
的所有值的总和大于最大值
100
,您可以尝试检查。如果为true,则可以找到差值并从最后一个值中减去。这可能不是最好的解决方案。请看下面

var dependens=document.querySelectorAll('.dependent');
[]forEach.call(依赖,函数(依赖){
dependen.onchange=函数(){
s(这个,这个值);
c(本);
}
});
功能c(当前){
var输入=当前值;
var max=100;
var delta=max-parseInt(输入);
var总和=0;
var部分=0;
风险值=[];
//所有兄弟姐妹之和
[]forEach.call(依赖,函数(依赖){
如果(当前!=依赖){
兄弟姐妹。推送(依赖);//注册为兄弟姐妹
总和+=+依赖值;
}
});
//更新所有兄弟姐妹
兄弟姐妹。forEach(函数(子分页,i){
var val=+subling.value;
var分数=0;
//计算分数
如果(总和=长度-1){
val=最大-部分;
}否则{
val=数学圆(δ*分数);
部分+=val;
}
//检查所有范围的总和是否大于最大值
var total=部分+parseInt(输入);
如果(总数>最大值){
var diff=total-max;//计算差值
val=val-diff;//更新值
部分=部分-差;
}
s(扬弃,val);
});
}
函数s(el,值){
var label=document.getElementById(el.id+“\u值”)
label.innerHTML=值;
el.值=值;
}

70%

30%
0%

将所有
输入的
组件的“步骤”设置为“2”,而不是“5”,我需要所有x5%的值,没错,但不是5%的步骤。我的决定是,但只有3个输入。