Показать сообщение отдельно
  #2 (permalink)  
Старый 31.10.2019, 09:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Math.abs зачем? И posled = (1/((1/con1)+(1/con2)+(1/con3))).toFixed(2). Ну и при параллельном соединении тоже тогда (con1+con2+con3).toFixed(2), коли предполагается ввод не только целых величин.

posled = Math.abs(1/(1/con1)+(1/con2)+(1/con3)).toFixed(2) ради того чтобы сделать единственное - document.getElementById('outposl').innerHTML = posled, это странно, а тем более странно объявлять эти переменные глобальными. Сначала:

document.getElementById('outposl').innerHTML = posled;
document.getElementById('outparal').innerHTML = paral;

а затем проверять корректность ввода, это нелогично, к тому же прописывать отдельно условия и действия для проверки каждого поля.

Тоже самое и здесь:

var b='при значениях ' + con1 + '' + ' ' + con2 + '' + ' ' + con3 + '\r\n';
document.getElementById('buf').innerHTML = b;

бесполезность в переменной b, а также в innerHTML так как textarea имеет свойство value, коим и нужно оперировать. И вообще, совсем непонятно назначение этого действия.

Зачем скрывать картинку не понятно, и в toggle_visibility() передавать ID, если она одна и можно сразу в функции обратиться к ней?

<main>
    <div class="opis">Введите значения емкости трех конденсаторов и нажмите кнопку "Вычислить". Для отделения дробной части используйте точку.</div>
    <img id="form" src="formuli.PNG" alt="forms"/>
    <fieldset>
        <legend>Ввод исходных данных</legend>
        <label>С1 (мкф) <input type="text" id="c1"/></label>
        <label>С2 (мкф) <input type="text" id="c2"/></label>
        <label>С3 (мкф) <input type="text" id="c3"/></label>
    </fieldset>
    <fieldset>
        <legend>Операции</legend>
        <button onclick="calculate()">Вычислить</button>
        <button onclick="clearButton()">Очистить</button>
        <button onclick="toggleVisibility()">Формулы</button>
    </fieldset>
    <fieldset>
        <legend>Результаты вычислений</legend>
        <div class="box">Емкость при последовательном соединении (мкф) = <output id="series"></output></div>
        <div class="box">Емкость при параллельном соединении (мкф) = <output id="parallel"></output></div>
        <textarea name="text" id="buf" rows="10" cols="50" ></textarea>
    </fieldset>
</main>

<script>
//если уж и объявлять глобально, то элементы, которыми в дальнейшем оперировать 
var c1 = document.getElementById('c1'),
    c2 = document.getElementById('c2'),
    c3 = document.getElementById('c3'),
    series = document.getElementById('series'),
    parallel = document.getElementById('parallel'),
    buff = document.getElementById('buf'),
    exp = document.getElementById("form");

function calculate() {
    //запятые можно и заменять
    var v1 = parseFloat(c1.value.replace(',', '.')),
        v2 = parseFloat(c2.value.replace(',', '.')),
        v3 = parseFloat(c3.value.replace(',', '.'));
    
    if(!v1 || !v2 || !v3) {
        alert('не все данные введены!');
        return;
    }
   
    series.value = (1/((1/v1) + (1/v2) + (1/v3))).toFixed(2); 
    parallel.value = (v1 + v2 + v3).toFixed(2);
    
    buff.value += 'при значениях ' + v1 + '' + ' ' + v2 + '' + ' ' + v3 + '\n';
}
 
function clearButton() {
   c1.value = '';
   c2.value = '';
   c3.value = '';
   c1.focus();
}
 
function toggleVisibility() {
    exp.hidden = !exp.hidden
}
</script>

Последний раз редактировалось laimas, 31.10.2019 в 12:37.
Ответить с цитированием