передача значения переменной JS

#javascript

#javascript

Вопрос:

Я пытаюсь нарисовать график на основе калькулятора, и результат уравнения используется в качестве одной из осей, в данном случае Y, чтобы сделать первую точку, а второй входной файл предназначен для оси X, но мне не удается перенести результат в следующую функцию. какие-либо рекомендации или подход?

Вот JS

 function parseCalculationString(s) {
    var calculation = [],
        current = '';
    for (var i = 0, ch; ch = s.charAt(i); i  ) {
        if ('^*/ -'.indexOf(ch) > -1) {
            if (current == '' amp;amp; ch == '-') {
                current = '-';
            } else {
                calculation.push(parseFloat(current), ch);
                current = '';
            }
        } else {
            current  = s.charAt(i);
        }
    }
    if (current != '') {
        calculation.push(parseFloat(current));
    }
    return calculation;
}

function removeBrackets(s) {
    let regEx = /((.*?))/g;
    let ops = s.match(regEx);

    for (var i = 0; i < ops.length; i  ) {
        let op = ops[i];

        let res = calculate(parseCalculationString(op.replace('(', '').replace(')', '')));
        s = s.replace(op, res);
    }
    return s;
}

function calculate(calc) {
    var ops = [
        {
            '^': function(a, b) {
                return Math.pow(a, b);
            }
        }, {
            '*': function(a, b) {
                return a * b
            },

            '/': function(a, b) {
                return a / b
            },
        }, {
            ' ': function(a, b) {
                return a   b
            },

            '-': function(a, b) {
                return a - b
            }
        }],
        newCalc = [],
        currentOp;
    for (var i = 0; i < ops.length; i  ) {
        for (var j = 0; j < calc.length; j  ) {
            if (ops[i][calc[j]]) {
                currentOp = ops[i][calc[j]];
            } else if (currentOp) {
                newCalc[newCalc.length - 1] = currentOp(newCalc[newCalc.length - 1], calc[j]);
                currentOp = null;
            } else {
                newCalc.push(calc[j]);
            }
            console.log(newCalc);
        }
        calc = newCalc;
        newCalc = [];
    }
    if (calc.length > 1) {
        console.log('Error: no funciona');
        return calc;
    } else {
        return calc[0];
    }
}

var calculateButton = document.getElementById('calculate'),
    userInput = document.getElementById('userInput'),
    sustuir = document.getElementById('userInputX'),
    result = document.getElementById('result');

calculateButton.addEventListener('click', function() {

    result.innerHTML = "la respuesta de Y "   calculate(
        parseCalculationString(removeBrackets(
            (userInput.value)
        ))

    );

    return calculateButton;
});

window.onload = function() {
    var dps = []; //dataPoints. 

    var chart = new CanvasJS.Chart("chartContainer", {
        title: {
            text: "Result"
        },
        data: [{
            type: "line",
            dataPoints: dps
        }]
    });

    function addDataPointsAndRender() {
        xValue = Number(document.getElementById("result").value);
        yValue = Number(document.getElementById("userInputX").value);
        dps.push({
            x: xValue,
            y: yValue
        });
        chart.render();
    }
    var renderButton = document.getElementById("calculate");
    renderButton.addEventListener("click", addDataPointsAndRender);
}
  

вот HTML

 <div class="container">
    <h1>Test Part 1 </h1>
    <p>Example 2x*(2 2) use * in input before parentheses in order to work properly.</p>
    <input type="text" id="userInput" />
    <input type="text" id="userInputX" />
    <input type="button" value="Calculate" id="calculate" />
    <div id="result"></div>
    <div id="chartContainer" style="height: 270px; width: 100%;"></div>
</div>

  

заранее спасибо

Комментарии:

1. почему возвращаются calculateButton в событии? что там внутри?

2. чтобы вернуть полученное значение, я имею в виду, что я могу ошибаться, пока он работает с ним.

3.ваш вызов функции 2 раза, я не знаю, почему? внутри event parseCalculationString также внутри removeBrackets

4. если я удаляю его, то я получаю сообщение об ошибке, оно вводит здесь «console.log(‘Ошибка: нет функции’);»

5. Я понятия не имею, чего вы хотите этим добиться … но если вы посмотрите на это правильно, используя parseCalculationString inside removeBrackets , а с другой стороны, вы вызываете removeBrackets как parseCalculationString параметр возврата, это всех смущает.