Javascript 通过考虑每个量程的值,在4个量程输入之间100%共享剩余的百分比

Javascript 通过考虑每个量程的值,在4个量程输入之间100%共享剩余的百分比,javascript,math,percentage,Javascript,Math,Percentage,我有4个输入,我正试图根据它们以前的价值在权益中分享它们的价值 我想要达到的是,如果我有一个字段是50%,另一个字段是25%,剩下的字段将是12.5% 如果我有两个字段,分别为29.75%和39.5%,那么最后一个字段将为1% 如果我有一个字段为75%,一个字段为20%,那么其他字段将为2.5% 等等 以下是我迄今为止未成功尝试的内容: let ranges=[a,b,c,d]; 设old_值=1; 用于(范围的范围) { rang.onfocus=(e)=>{ old_value=parse

我有4个输入,我正试图根据它们以前的价值在权益中分享它们的价值

我想要达到的是,如果我有一个字段是50%,另一个字段是25%,剩下的字段将是12.5% 如果我有两个字段,分别为29.75%和39.5%,那么最后一个字段将为1% 如果我有一个字段为75%,一个字段为20%,那么其他字段将为2.5% 等等

以下是我迄今为止未成功尝试的内容:

let ranges=[a,b,c,d];
设old_值=1;
用于(范围的范围)
{
rang.onfocus=(e)=>{
old_value=parseInt(即target.value);
}
rang.onchange=(e)=>{
console.log(旧值);
让sortedRanges=ranges.filter(el=>el.name!=e.target.name);
用于(让当前的分拣机)
当前值-=(parseInt(e.target.value)-旧值)/4;
旧值=e.target.value;
}
}

const ranges=[a,b,c,d];
ranges.forEach(rangeElement=>{
rangeElement.addEventListener('change',({target:{value}}})=>{
setAttribute('value',(+value).toFixed(2));
常量rangeIndex=ranges.indexOf(rangeElement)
const previousRanges=ranges.slice(0,rangeIndex);
const nextRanges=ranges.slice(rangeIndex+1);
const sumOfPrevious=+value+previousRanges.reduce((acc,{value})=>acc++值,0)
const valueOfRest=((100-前一个sumof)/nextRanges.length).toFixed(2)
nextRanges.forEach(range=>range.setAttribute('value',valueOfRest));
})
})
input::after{
内容:attr(value);
}


您有四个范围的示例吗?如果我将第一个字段(全部25个)更改为50个,会怎么样?如何找到需要更改的字段?@User863这是一个好问题,我想可能会有一个数学公式,只考虑所有字段的总数并重新分配它。比如secondfield=value*remainingpercenttoshare。谢谢你的帮助,我也许能做点什么。我唯一剩下的问题是,如果包含100%的字段是第三个字段还是第四个字段呢?我修改了代码片段以显示百分比。对于您所要求的用例,请参见上面的内容。如果没有按照您希望的方式执行添加If语句来处理这些情况,则有些地方不太正确,您可以在100%@codeanjero处有4个字段,您必须更新
nextRanges
max
属性以防止出现这种情况。它会阻止我的其他值,但谢谢