Simple JavaScript Calculator with JQuery -
i've been working on simple javascript calculator more few days. css , html seem good. calculator works sevens , division function! other numbers show in top output line expected, lower output outputs answer sevens , division. can't seem figure out why jquery isn't inputting on click. appreciated! link codepen... http://codepen.io/rdaniels34/pen/mkxokx
/******************************* math functions *******************************/ var topnumber = []; var newnumber = []; var operator = []; var computednumber = []; /********************************** mathematical function buttons ***********************************/ function clrfunction() { topnumber.splice(0, topnumber.length); document.getelementbyid("numberdisplay1").innerhtml = 0; computednumber.splice(0, computednumber.length); document.getelementbyid("numberdisplay2").innerhtml = 0; } function dividefunction() { topnumber[topnumber.length] = " / "; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function timesfunction() { topnumber[topnumber.length] = " x "; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function backspacefunction() { topnumber.splice(topnumber.length - 1, 1); document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); if (topnumber.length == []) { document.getelementbyid("numberdisplay1").innerhtml = 0; } } function subtractfunction() { topnumber[topnumber.length] = " - "; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function addfunction() { topnumber[topnumber.length] = " + "; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function percentfunction() { topnumber[topnumber.length] = "% "; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function rd34function() { document.getelementbyid("numberdisplay1").innerhtml = "programming fun!"; } //function plusminusfunction() { // var newnumber = ""; // if (topnumber < 0) { // newnumber = +(topnumber); // } else if (topnumber > 0) { // newnumber = -(topnumber); // } // return plusminusfunction(); // document.getelementbyid("numberdisplay1").innerhtml = topnumber.splice(0, 0, newnumber); // } function decimalfunction() { topnumber[topnumber.length] = "."; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } //function equalsfunction() { // document.getelementbyid("numberdisplay1").innerhtml = topnumber.join("").eval(topnumber); // if (topnumber.length == []) { // document.getelementbyid("numberdisplay2").innerhtml = 0; // } //} /**************************** number button functions *****************************/ function onefunction() { topnumber[topnumber.length] = 1; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function twofunction() { topnumber[topnumber.length] = 2; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function threefunction() { topnumber[topnumber.length] = 3; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function fourfunction() { topnumber[topnumber.length] = 4; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function fivefunction() { topnumber[topnumber.length] = 5; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function sixfunction() { topnumber[topnumber.length] = 6; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function sevenfunction() { topnumber[topnumber.length] = 7; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function eightfunction() { topnumber[topnumber.length] = 8; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function ninefunction() { topnumber[topnumber.length] = 9; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } function zerofunction() { topnumber[topnumber.length] = 0; document.getelementbyid("numberdisplay1").innerhtml = topnumber.join(""); } /********************************* bottom number display ********************************/ $(document).ready(function() { var testnumlength = function(firstnumber) { if (firstnumber.length > 9) { $("#numberdisplay2").text(firstnumber.substr(firstnumber.length - 9, 9)); if (firstnumber.length > 15) { firstnumber = ""; $("#numberdisplay2").text("err"); } } }; var firstnumber = ""; var secondnumber = ""; var answer = ""; var operator = ""; $("#numberdisplay2").text("0"); $("#numbers").click(function() { firstnumber += $(this).text(); $("#numberdisplay2").text(firstnumber); testnumlength(firstnumber); }); $("#operator").click(function() { operator = $(this).text(); secondnumber = firstnumber; firstnumber = ""; $("#numberdisplay2").text(); }); $("#clr").click(function() { firstnumber = ""; $("#numberdisplay2").text("0"); if ($(this).attr("id") == "clr") { firstnumber = ""; } }); $("#backspace").click(function () { firstnumber -= $(this).text(); $("#numberdisplay2").text(firstnumber); testnumlength(firstnumber); }); $("#equals").click(function() { var answer = ""; parsefloat(firstnumber); parsefloat(secondnumber); if (operator == "-") { answer = secondnumber - firstnumber; } else if (operator == "x") { answer = secondnumber * firstnumber; } else if (operator == "/") { answer = secondnumber / firstnumber; } else if (operator == "+") { answer = secondnumber + firstnumber; } // else if (operator == "%") { // solution = number / 100; // } //answer.tostring(""); $("#numberdisplay2").text(answer.tofixed(6)); testnumlength(answer); //newnumber = ""; //nextnumber = ""; }); });
the issue have used same html identifier multiple times numbers.
<button type="button" onclick="ninefunction()" id="numbers" class="btn btn-default btn-sm">9</button> <button type="button" onclick="fourfunction()" id="numbers" class="btn btn-default btn-sm">4</button> <button type="button" onclick="fivefunction()" id="numbers" class="btn btn-default btn-sm">5</button> so when browser interprets code:
$("#numbers").click(function() { firstnumber += $(this).text(); $("#numberdisplay2").text(firstnumber); testnumlength(firstnumber); }); it not understand numbers element intending reference.
to fix this, need either use class .numbers or give each number button it's own unique html id , bind that.
as example:
<button type="button" onclick="ninefunction()" class="numbers btn btn-default btn-sm">9</button> <button type="button" onclick="fourfunction()" class="numbers btn btn-default btn-sm">4</button> and change code to:
$(".numbers").click(function() { firstnumber += $(this).text(); $("#numberdisplay2").text(firstnumber); testnumlength(firstnumber); });
Comments
Post a Comment