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

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -