-1

I started learning JS 2 days ago. I downloaded an algebra calculator and inserted it into my webpage. Here is the full code:

<!doctype html>
<html>
  <head>

    <div style="width:100%;">
        <textarea id="output1" name="terminal" rows="4" cols="80" style="width:100%;"></textarea>
        <input name="execute" value="&#x25B6;" onclick="execute(1);" type="button">
    </div>

    <script src="javascripts/jquery.min.js"></script>
    <script src="dist/latest-stable/algebrite.bundle-for-browser.js"></script>
    <script type="text/javascript" language="javascript">


    function execute (whichTerminal) {
        var sandbox = $('sandbox');
        var jsResult = $('jsResult');
        try {
            var textToBeExecuted = 'factor(3+3)';
            var result;
            if (/Algebrite\.[a-z]/.test(textToBeExecuted) || /;[ \t]*$/.test(textToBeExecuted)) {
                result = eval(textToBeExecuted);
            }
            else {
                result = Algebrite.run(textToBeExecuted);
            }

            //alert(result);
            $('#output' + whichTerminal).val(result)
        }
        catch (err) {
            var errDesc = err;
            errorBox.update('<h4>Error!<\/h4><code>' + errDesc + '<\/code>' );
            errorBox.show();
        }
    }

  </script>

The script returns prime factors of 3+3 or 6 (var textToBeExecuted = 'factor(3+3)'), but what I need is to evaluate expressions taken from the URL (example: /?input=3%B54 means 3+4 and returns 7). How can I do this? Please help!

Makyen
  • 31,849
  • 12
  • 86
  • 121

1 Answers1

0

// try this code. The Parameter in the URL need to be added as ?expression=1+1 // Also the code can tweaked easily as per the requirement.

<!DOCTYPE html>
<html lang = "en">
<body>
<script>
     var decodedString = decodeURIComponent(window.location.search.split("expression=")[1]);
     console.log(decodedString);
     if(decodedString.split('\+').length > 1 && decodedString.split('\+').length < 3){
        var exp = decodedString.split('\+');
        var result = parseInt(exp[0]) + parseInt(exp[1]);
        alert(decodedString + " = " + result);
     }
     else if(decodedString.split('\-').length > 1 && decodedString.split('\-').length < 3){
        var exp = decodedString.split('\-');
        var result = parseInt(exp[0]) - parseInt(exp[1]);
        alert(decodedString + " = " + result);
     }
     else if(decodedString.split('\*').length > 1 && decodedString.split('\*').length < 3){
        var exp = decodedString.split('\*');
        var result = parseInt(exp[0]) * parseInt(exp[1]);
        alert(decodedString + " = " + result);
     }
     else if(decodedString.split('\/').length > 1 && decodedString.split('\/').length < 3){
        var exp = decodedString.split('\/');
        var result = parseInt(exp[0]) / parseInt(exp[1]);
        alert(decodedString + " = " + result);
     }
     else{
        console.log("Not a valid operator (Operator Supported : +-*/) found or more than 1 operator found in expression.");
     }
    </script>
</body>
</html>