100 %
by dkunin
HTML
<html>
<head>
<script lang="javascript">
var numbers = [
[ 'Значение 1', 25 ],
[ 'Значение 2', 25 ],
[ 'Значение 3', 25 ],
[ 'Значение 4', 25 ]
];
var table = document.createElement('table');
function initForm() {
var table = document.createElement('table');
for ( var i = 0; i < numbers.length; ++i ) {
var row = document.createElement('tr');
row.innerHTML = createRowHTML(i, numbers[i]);
table.appendChild(row);
}
document.getElementById('numbers_form').appendChild(table);
}
function initForm1() {
var i = (numbers.length);
numbers[i]=[ 'Значение ' + (i + 1), 1 ]
var row = document.createElement('tr');
row.innerHTML = createRowHTML(i, numbers[i]);
table.appendChild(row);
document.getElementById('numbers_form').appendChild(table);
}
function onChange(field) {
var skipId = field.id;
var value = field.value;
if ( value < 0 || value > 100 ) {
alert("Введите значение от 0 до 100");
return;
}
var method = getMethod();
if ( method == 'change-all' ) {
doChangeAll(field.id);
} else if ( method == 'change-next' ) {
doChangeNext(field.id);
}
}
function doChangeAll(skipId) {
var requiredSumOfOtherFields = 100 - document.getElementById(skipId).value;
var actualSumOfOtherFields = calculateSumSkipId(skipId);
var multiplier = requiredSumOfOtherFields / actualSumOfOtherFields;
for ( var i = 0; i < numbers.length; ++i) {
var id = i;
if ( id != skipId ) {
document.getElementById(id).value = document.getElementById(id).value * multiplier;
}
}
}
function doChangeNext(afterId) {
var requiredSumOfNextFields = 100 - calculateSumBeforeId(afterId);
if ( requiredSumOfNextFields < 0 ) {
alert("Невозможно привести сумму к 100");
return;
}
var actualSumOfNextFields = calculateSumAfterId(afterId);
var multiplier = requiredSumOfNextFields / actualSumOfNextFields;
for ( var i = 0; i < numbers.length; ++i) {
var id = i;
if ( id >...