БлогNot. Линейная пропорция онлайн :)

Линейная пропорция онлайн :)

Javascript-поделка непонятных времён на тему линейной пропорции :) Впрочем, не должна быть очень старой, раз для округления вещественных чисел использован метод .toFixed

Смысл этого маленького скрипта - онлайн-вычисление линейной пропорции, то есть, "40 относится к 83 как 17 к чему?" из начальной школы :)

Любопытно в коде - контроль ввода в calcMe(), никаких лишних сообщений и никакой кнопки "Вычислить", а как только введены 3 числа, так и 4-е считается.

Вот в работе и код:

Извините, для работы приложения нужен включённый Javascript
Отношение к
= к

<script type="text/javascript">
 function trim(string) { return string.replace (/\s+/g,""); }
 function toFixed(n) {
  var z = document.formpro.fixedN.options[document.formpro.fixedN.selectedIndex].value;
  return (z==-1 ? n : n.toFixed(z));
 }
 function isLastPoint (a) {
  return a.substring(a.length-1)=='.' && a.lastIndexOf('.') == a.indexOf('.');
 }
 function calcMe () {
  var a1=parseFloat(trim(document.formpro.a1.value));
  var c1=parseFloat(trim(document.formpro.c1.value));
  var b2=parseFloat(trim(document.formpro.b2.value));
  if (isNaN(a1) || isNaN(c1) || isNaN(b2)) return;
  document.formpro.a1.value = a1 + (isLastPoint(document.formpro.a1.value) ? '.' : '');
  document.formpro.c1.value = c1 + (isLastPoint(document.formpro.c1.value) ? '.' : '');
  document.formpro.b2.value = b2 + (isLastPoint(document.formpro.b2.value) ? '.' : '');
  var d2 = c1*b2/a1;
  document.formpro.d2.value = (isNaN(d2) ? "Ошибка" : toFixed(d2));
 }
 function clearMe () {
  document.formpro.a1.value = '';
  document.formpro.c1.value = '';
  document.formpro.b2.value = '';
  document.formpro.d2.value = '';
 }
</script>
<noscript><div align="center">Извините, для работы приложения нужен включённый Javascript</div></noscript>

<form name="formpro" method="post" onsubmit="return false;">
 <table align="center" cellpadding="0" cellspacing="4" border="0">
  <tr>
   <td align="center" valign="middle">Отношение</td>
   <td align="center" valign="middle"><input type="text" name="a1" size="10" maxlength="8" value="" tabindex="1"
    onselect="calcMe();" onclick="calcMe();" onkeyup="calcMe();" /></td>
   <td align="center" valign="middle">к</td>
   <td align="center" valign="middle"><input type="text" name="c1" size="10" maxlength="8" value="" tabindex="2"
    onselect="calcMe();" onclick="calcMe();" onkeyup="calcMe();" /></td>
   <td align="center" valign="middle">
    <input type="button" name="clear" value="Очистить" onclick="clearMe();" tabindex="4"/>
   </td>
  </tr>
  <tr>
   <td align="center" valign="middle">=</td>
   <td align="center" valign="middle"><input type="text" name="b2" size="10" maxlength="8" value="" tabindex="3"
    onselect="calcMe();" onclick="calcMe();" onkeyup="calcMe();" /></td>
   <td align="center" valign="middle">к</td>
   <td align="center" valign="middle"><input type="text" name="d2" size="10" value="" readonly /></td>
   <td align="center" valign="middle">
    <select name="fixedN" size="1" tabindex="5" onchange="calcMe();">
     <option value="-1" selected>не округлять
     <option value="0">в целых
     <option value="1">1 знак
     <option value="2">2 знака
     <option value="3">3 знака
     <option value="4">4 знака
     <option value="5">5 знаков
     <option value="6">6 знаков
     <option value="7">7 знаков
     <option value="8">8 знаков
     <option value="9">9 знаков
    </select>
   </td>
  </tr>
 </table>
</form>

Случай из жизни в тему:

Директор крупной торгово-закупочной компании в личном разговоре жалуется мне на своих "специалистов", молодых выпускников (нецензурные слова заменены на ***):

- Чему вы там, ***, этих менеджеров ***ных учите... Ну ладно, сложных процентов от простых не отличат, я в них сам, ***, путаюсь, но линейная пропорция-то мне, ***, в логистике нужна! Ни ***а не умеют... и вот я, директор, ***, хожу и им пропорции считаю! Меня, ***, ещё по малолетке в седьмом классе этому научили!

- Тогда бакалавриата и подушевого финансирования не было, Андреич.

27.04.2016, 21:24 [6407 просмотров]


теги: javascript числа

К этой статье пока нет комментариев, Ваш будет первым