1

Тема: Додавання форм кнопкою та врахування нових значень формулами у коді

Підкажіть, добрі люди, як зробити кнопкою додавання нових значень Va, наприклад: натиснув кнопку ("+" під першим Va, наприклад) - з'явилося Va2, натиснув ще раз кнопку "+" (під - додалося Va3. І щоб наступні формули виводили результат для потрібної кількості Va (Скільки додав Va) стільки і результатів. (формули виконуються по черзі вдруг чого з першої по останню) (остання формула (So) - автономна по суті, їй потрібна тільки Va Значення, шо відбувалось у попередніх формулах їй без різниці. (коди питався (чесно) написать коротко, в оригіналі там через глобальні змінні заведені J, t1, t2, t3)

let resultTt;
let resultStd;
let resultTt1;
let resultSa;
let resultSo;

function getGlobal() {
  return Number(document.querySelector('#JGlobal').value)
}
let J = getGlobal();
document.querySelector('#JGlobal').addEventListener('change', function() {
  J = getGlobal();

})

function getT1Global() {
  return Number(document.querySelector('#T1Global').value)
}
let t1 = getT1Global();
document.querySelector('#T1Global').addEventListener('change', function() {
  t1 = getT1Global();

})

function getT2Global() {
  return Number(document.querySelector('#T2Global').value)
}
let t2 = getT2Global();
document.querySelector('#T2Global').addEventListener('change', function() {
  t2 = getT2Global();

})

function getT3Global() {
  return Number(document.querySelector('#T3Global').value)
}
let t3 = getT3Global();
document.querySelector('#T3Global').addEventListener('change', function() {
  t3 = getT3Global();

})

function getGlobalVa() {
  return Number(document.querySelector('#VaGlobal').querySelector('input').value)
}
let va = getGlobalVa();
document.querySelector('#VaGlobal').addEventListener('change', function() {
  va = getGlobalVa();

})

// 1 формула - значення Tt:
function breakWayTt() {
  const form = document.querySelector('#formInputTt');
  resultTt = va / (3.6 * J);
  console.log(+resultTt.toFixed(4));
  const result = document.querySelector('#resultTt');
  result.innerText = `Результат: ${Number(resultTt.toFixed(4))}`;
  return +resultTt.toFixed(4);

}

// 2 формула - значення Sтд:
function breakWayStd() {
  const form = document.querySelector('#formInputStd');
  const Sj = +form[0].value;
  const L = +form[1].value;
  const C = +form[2].value;
  resultStd = Sj + va * t3 / 7.2 - L - C;
  console.log(+resultStd.toFixed(2));
  const result = document.querySelector('#resultStd');
  result.innerText = `Результат: ${Number(resultStd.toFixed(2))}`;
  return +resultStd.toFixed(2);

}

// 3 формула - значення Tt1:
function breakWayTt1() {
  resultTt1 = resultTt - (Math.sqrt(resultTt ** 2 - (2 * resultStd) / J + (t3 ** 2) / 4));
  console.log(+resultTt1.toFixed(4));
  const result = document.querySelector('#resultTt1');
  result.innerText = `Результат: ${Number(resultTt1.toFixed(4))}`;
  return +resultTt1.toFixed(4);
}

// 4 формула - значення Sa:
function breakWaySa() {
  const form = document.querySelector('#formInputSa');
  const Tp = +form[0].value;
  resultSa = (Tp - resultTt1) * (va / 3.6) + resultStd;
  console.log(+resultSa.toFixed(2));
  const result = document.querySelector('#resultSa');
  result.innerText = `Результат: ${Number(resultSa.toFixed(2))}`;

}
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Formula 1</title>
  </head>
  <body>
    <h1>При гальмуванні</h1>
    <form>
      <div>
        <label>J1:</label>
        <input type="text" name="team" id="JGlobal" list="team_list">
        <datalist id="team_list">
          <option value="6.9">6.9 м3 мокрий</option>
          <option value="7.5">7.5 м3 сухий</option>
        </datalist>
      </div>
      <form>
        <div>
          <label>t1:</label>
          <select id="T1Global">
            <option disabled>оберіть значення (треба обрать - не буде просто так працювати)</option>
            <option>1.0</option>
          </select>
        </div>
      </form>
      <form>
        <div>
          <label>t2:</label>
          <select id="T2Global">
            <option disabled>треба обрать - не буде просто так працювати</option>
            <option>0.2</option>
          </select>
        </div>
      </form>
      <form>
        <div>
          <label>t3:</label>
          <select id="T3Global">
            <option disabled>треба обрать - не буде просто так працювати</option>
            <option>0.25</option>
          </select>
        </div>
      </form>
      <form id="VaGlobal">
        <div>
          <label>Va</label>
          <input type="number">
        </div>
      </form>
      <h1>Значення Tt</h1>
      <form id="formInputTt"></form>
      <button onclick="breakWayTt()">Результат V</button>
      <h2 id="resultTt"></h2>
      <h1>Значення Sтд</h1>
      <form id="formInputStd">
        <div>
          <label>Sj</label>
          <input type="number" value="9.3">
        </div>
        <div>
          <label>L</label>
          <input type="number" value="2.52">
        </div>
        <div>
          <label>C</label>
          <input type="number" value="0.838">
        </div>
      </form>
      <button onclick="breakWayStd()">Результат Sтд</button>
      <h2 id="resultStd"></h2>
      <h1>Значення Tt1</h1>
      <form id="formInputTt1"></form>
      <button onclick="breakWayTt1()">Результат Tt1</button>
      <h2 id="resultTt1"></h2>
      <h1>Значення Sa</h1>
      <form id="formInputSa">
        <div>
          <label>Tп</label>
          <input type="number" value="1.91">
        </div>
      </form>
      <button onclick="breakWaySa()">Результат Sa</button>
      <h2 id="resultSa"></h2>
      <button onclick="breakWaySo()">Результат So</button>
      <h2 id="resultSo"></h2>
      <button onclick="startAll()">Результат Загальний</button>
      <h2 id="startAll"></h2>
  </body>
</html>

javascripthtmlhtml5

2

Re: Додавання форм кнопкою та врахування нових значень формулами у коді

GPT-4 написав:

Завдання полягає в тому, щоб додавати нові значення Va за допомогою кнопки "+". Щоб зробити це, потрібно додати такий код до HTML та JavaScript:

<div id="VaList">
  <div id="VaGlobal">
    <label>Va1</label>
    <input type="number">
    <button onclick="addNewVa()">+</button>
  </div>
</div>
function addNewVa() {
  const vaList = document.querySelector('#VaList');
  const newIndex = vaList.children.length + 1;
  const newVa = document.createElement('div');
  newVa.innerHTML = `
    <label>Va${newIndex}</label>
    <input type="number">
  `;
  vaList.appendChild(newVa);
}

function getGlobalVa() {
  const vaList = document.querySelector('#VaList');
  const vaInputs = vaList.querySelectorAll('input');
  const vaValues = Array.from(vaInputs).map(input => Number(input.value));
  return vaValues;
}

Цей код додає нову кнопку "+" поряд з полями вводу Va. Коли користувач натискає кнопку, створюється нове поле вводу Va з наступним порядковим номером. Функція getGlobalVa також оновлена, щоб повертати масив усіх значень Va замість одного значення.

Тепер результати формул будуть виводитись для кожного значення Va. Ось змінений код JavaScript для цього:

// 1 формула - значення Tt:
function breakWayTt() {
  const vaValues = getGlobalVa();
  const result = document.querySelector('#resultTt');
  result.innerText = '';
  vaValues.forEach((va, index) => {
    const res = va / (3.6 * J);
    console.log(`Результат для Va${index + 1}: ${+res.toFixed(4)}`);
    const p = document.createElement('p');
    p.innerText = `Результат для Va${index + 1}: ${Number(res.toFixed(4))}`;
    result.appendChild(p);
  });
}

Схожим чином змінити інші функції, щоб вони також виводили результати для кожного значення Va.