Javascript math function resolver

Я пытаюсь создать функцию, в которой вы будете вводить переменные в форме HTML, и она будет вычислять все точки Y, но по некоторым причинам эта строка кода не работает: m * ( x * x ) + c * x + p = points; я не знаю, является ли мой синтаксис неправильным или что нибудь? Полный код здесь:

var m = document.getElementById("m").value;
var c = document.getElementById("c").value;
var p = document.getElementById("p").value;
var x = -10;
var points;
var y = -10;
var functionPoints = points[0];
function functionResolver(m, c, p) {
        while ( x > -11 && x < 11 ) {
         m * ( x * x ) + c * x + p = points;
         points[y] = points;
         y += 1;
         x += 1;
       };
     };

javascript,

0

Ответов: 5


0 принят

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

• Круглые скобки a Экспоненты a € ? Умножение / Отдел (слева направо) a € ? Добавление / вычитание (слева направо).

Например

(m * (x * x)) + c * x + p = points;

будет отличаться от

m * (x * x) + (c * x) + p = точки;

которые будут отличаться от

** m * (x * x) + (c * (x + p)) = точки;

Также части могут быть не номерами, поэтому конвертировать в числа с помощью Number ()


0

document.getElementById("m").valueявляется a string.

Делать var m = Number(document.getElementById("m").value);

И вам нужно назначение правой стороны:

 points[y] = m * ( x * x ) + c * x + p;

0

Как упоминалось в других ответах, вы должны преобразовать входные данные из строки в число. Кроме того, всегда старайтесь поместить имя переменной в левую часть выражения (т. Е. Справа) и не переопределяйте переменную массива точек (объявленную выше цикла while) с вычисленным результатом. Здесь я объявляю локальную точечную переменную для хранения одиночного вычисленного результата. Существует несколько способов преобразования вашего ввода в строку:

Использование parseFloat (если вы хотите поддерживать десятичные входы):

var point = parseFloat(m * ( x * x ) + c * x + p);
points[y] = point;

Использование parseInt:

var point = parseInt(m * ( x * x ) + c * x + p);
points[y] = point;

Использование Number (в основном такое же, как parseInt, см. В чем разница между parseInt () и Number ()? ):

var point = Number(m * ( x * x ) + c * x + p);
points[y] = point;

В следующем примере мы удаляем потребность в локально-объявленной переменной точки путем уплотнения двух строк на один (вы можете, конечно, использовать любой из вышеперечисленных методов из числа строк в число):

points[y] = parseFloat(m * ( x * x ) + c * x + p);

0

Я не уверен, что вы подразумеваете под пунктами [y] здесь ... так как y инициализируется с -10, а точки [-10] в основном означают, что вы пытаетесь получить доступ к индексу «-10» точек.


0

Чтобы изложить другие ответы, помимо проблем с недопустимым правым назначением и преобразования входных данных в числовые значения, также необходимо дождаться загрузки DOM и позволить пользовательскому времени вводить значения в поля ввода. Ваш текущий код пытается мгновенно загрузить значения, а не ждать нажатия кнопки.

Для полного примера того , как осуществить это, пожалуйста , см это суть

let elM, elC, elP, elR, points;
let min = -10;
let max = 10;
document.addEventListener("DOMContentLoaded",function(){
  elM = document.getElementById("m");
  elC = document.getElementById("c");
  elP = document.getElementById("p");
  elR = document.getElementById("result");
  document.getElementById("run").addEventListener("click",calculate);
});

function functionResolver(m, c, p) {
  let points = [];
  for(let x=min; x<=max; x++) {
    points.push( [x,m * ( x * x ) + c * x + p] )
  }
  return points;
}
function calculate() {
  points = functionResolver(+elM.value,+elC.value,+elP.value);
  //wipe result table, creating col headings
  elR.innerHTML = "<tr><th>x</th><th>y</th></tr>"; 
  points.forEach( coord => {
    elR.innerHTML += `<tr><td>${coord[0]}</td><td>${coord[1]}</td></tr>
`;
  });
}
JavaScript,
Похожие вопросы