2

My script with jQuery isn't loading, and when I press the calculate button it doesn't nothing (unsurprisingly.) I KNOW I copied and pasted jQuery in hard code into the file; this is intentional as I want the file to run offline as that's when I normally run it. Also it's intentional that I created the personal console as I normally work on this on a school laptop because that's when I'm bored and they've disabled the developer console.

It's not the jQuery that isn't loading though; I've been able to run it before.

I've tried checking the code, but to me it's just broken. Before the script didn't load, however, I think that somewhere there's an infinite loop because according to task manager, when the script loads and a calculate button is pressed the page freezes but the CPU is running like crazy. I have no idea what could be causing all of this, please help!

I know that other people have probably already done this and that there's probably many other better ways to do what I want to do, so just please remember that I'm doing this for fun, but I've been going at this in my spare time for quite a while an I haven't found anything so either I'm really dumb or the code is broken and it needs a rewrite.

It's supposed to increase the limit of the maximum number a language can understand by pushing the limit from something like 54 billion to 54 billion digits long. However, as stated in the summery, the script doesn't load.

<span id="console"></span>
<form>
    <input type="radio" id="add" name="mathtype" checked="checked"> Addition (in devolopment)<br>
    <input type="radio" id="sub" name="mathtype"> Subtraction (Unavailible)<br>
    <input type="radio" id="multi" name="mathtype"> Multiplication (Unavailible)<br>
    <input type="radio" id="div" name="mathtype"> Division (Unavailible)
</form>
<br>
Number: <input type="text" id="input1">
<br>
Number: <input type="text" id="input2">
<br>
<span id="extraInputs"></span>
<button id="addInput">Add another input field</button>
<br>
<button id="calc">Calculate...</button>
<br>
<br>
<p id="output">Press "Calculate..."</p>

<script>/*This is where I load the jQuery*/</script>

<script>
    document.getElementById("console").innerHTML("<div class='info'>Script ran</div>");
    "use strict";
    $(document).ready(function(){
        try {
            var page = $("#console");
            var log = function(message) {
                page.append('<div class="log">'+message+'</div>');
            };
            var info = function(message) {
                page.append('<div class="info">'+message+'</div>');
            };
            var warn = function(message) {
                page.append('<div class="warn">'+message+'</div>');
            };
            var error = function(message) {
                page.append('<div class="error">'+message+'</div>');
            };
            log("Doc and console up");
        } catch(err) {
            document.getElementById("console").innerHTML("<div class='error'>ERROR WITH LAUNCHING CONSOLE.</div>");
        }

        try {
            var inputBoxes = 2;

            var add = function(num1, num2) {
                log("Running add");
                var neg = [0, false, false];

                num1 = num1.split("-");
                num2 = num2.split("-");
                log(num1);
                log(num2);

                if(num1.length == 2) {
                    num1 = num1[1];
                    neg[1] = true;
                } else {
                    num1 = num1.toString();
                }
                if (num2.length == 2) {
                    num2 = num2[1];
                    neg[2] = true;
                } else {
                    num2 = num2.toString();
                }

                log(num1);
                log(num2);
                info(neg);

                var isNeg = false;

                if(((neg[1] || neg[2]) && (neg[1]!=neg[2])) == true) {
                    isNeg = true;
                }
                log(neg);

                num1 = num1.split('');
                num2 = num2.split('');
                log(num1);
                log(num2);

                var maxChar = Math.max(num1.length, num2.length);
                log(maxChar);

                if(maxChar > num1.length) {
                    for(var i=0;i<maxChar-num1.length;i++) {
                        num1.unshift("0");
                    }
                } else if (maxChar > num2.length) {
                    for(var i=0;i<maxChar-num1.length;i++) {
                        num2.unshift("0");
                    }
                }

                var final = [];
                var time;
                var carry = 0;

                for (var i=maxChar; i>0;i--) {
                    if(time != i++) {
                        carry = 0;
                    }

                    final[i] = (parseInt(num1[i]) + parseInt(num2[i]) + parseInt(carry)).toString();

                    if(parseInt(final[i]) > 9) {
                        var temp = final[i].split('');
                        final[i] = temp[1];
                        carry = temp[0];
                        time = i;
                    }
                }

                if(isNeg){
                    final.unshift("-");
                }

                info(final.join());
                return final.join();
            };

            $("button#addInput").click(function(){
                inputBoxes++;
                $("#extraInputs").append('Number: <input type="text" id="input'+inputBoxes+'"><br>');
            });

            $("#calc").click(function(){
                info("Checking conditions...");
                if ($("#add").is(":checked")) {
                    info("Running...");
                    info($("#input1").val());
                    info($("#input2").val());

                    var final = add($("#input1").val(), $("#input2").val());
                    info("Ran");
                    if (inputBoxes > 2) {
                        info("inputBoxes: "+inputBoxes.toString());
                        for (var i=3; i<inputBoxes; i++) {
                            final = add(final, $("#input"+i.toString()).val());
                        }
                    }
                    info(final);
                    $("#output").text(final));
                }
                log("Functions up");
            });
        } catch(err) {
          error(err);
        }
    });
</script>

It should take any amount of numbers and add them (as well as other things eventually), as long as the result's number of characters is less than or equal to the biggest number the language can understand.

8
  • 1
    After reading this its not clear to me what the error/question is. If your using jQuery functionality, where are you actually loading the library itself? Is that the "/*This is where I load the jQuery*/" section? Commented Jan 17, 2019 at 20:52
  • yes, it is. I just didn't want to paste all of the like 84 kb of code that's jQuery compressed. Commented Jan 17, 2019 at 20:54
  • I recommend storing the jQuery.js file on your computer locally and linking it like that, instead of pasting it directly into your code. It will look much tidier. Commented Jan 17, 2019 at 20:58
  • So you're including the entire library inline? Would suggest to not do that. I know that you said you want this to load offline, but that doesn't mean that you need to include it inline. You can simply request it from the local server rather than from a CDN. Commented Jan 17, 2019 at 20:59
  • 1
    What's going on here? i will keep the same value and you will have an infinite loop: for (var i=maxChar; i>0;i--) { if(time != i++) { Commented Jan 17, 2019 at 20:59

1 Answer 1

1

I don't know what your code does, but you definitely have an infinite loop here:

for (var i=maxChar; i>0;i--) {
    if(time != i++) {
        carry = 0;
    }

At each iteration, the for loop will decrease i by 1, but you are also increasing it by one, so it will keep the same value and the loop never ends. I imagine you actually wanted to check if (time != i+1).

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.