2017-04-07 76 views
0

Link to Codepen不确定如何使此计算器功能工作

对于即将到期的数学项目。

我试过应用DRY概念,但我不知道如何。我开始写一个适用于所有数字的函数,但是在一半的时候我意识到它不可能工作。我知道这个匿名函数需要改变,但我现在还不知道,因为我不知道另一种实现方法。

document.querySelector(".button").addEventListener("click", function) { 
    num = document.getElementById('something'); 

    if (num != null && num === document.getElementById("zero")) { 
    calculation = calculation.concat("0"); 
    } else if (num != null && num === document.getElementById("one")) { 
    calculation = calculation.concat("1"); 
    } else if (num != null === && num document.getElementbyId("two")) { 
    calculation = calculation.concat("2"); 
    } else if (num != nul && num === document.getElementbyId("three")) { 
    calculation = calculation.concat("3"); 
    } else if (num != nul && num === document.getElementbyId("four")) { 
    calculation = calculation.concat("4"); 
    } else if (num != nul && num === document.getElementbyId("five")) { 
    calculation = calculation.concat("5"); 
    } else if (num != nul && num === document.getElementbyId()) { 
    calculation = calculation.concat("6"); 
    } 
} 

每个数字位于表格内的按钮内。他们也有身份证明他们是哪个号码。我不是在寻找代码,也不想抄袭任何东西。只是寻求建议,我可以做什么不同。

+0

'NUM ===的document.getElementById(“零”)'是一个比较对象到另一个对象。他们是不同的对象,所以这将永远是'错误的'。你需要比较它们的值。而且在某个时候,你开始写'nul'而不是'null'。你的第二个'else if'语法不正确。 – Xufox

+0

一般观点:'document.querySelector(“。button”)'选择带*类* *“*”按钮的* first *元素。如果你想选择'

回答

0

你的最简单的方法将被写入一个共同的功能:

var buttons = document.querySelectorAll("button"); 
 
for (var i = 0; i < buttons.length; i++) { 
 
    buttons[i].addEventListener(
 
    "click", 
 
    function() { 
 
    var current_value = this.innerHTML; //typed single number 
 
    var display_value = document.getElementById('display').value; //the value on the calculator display 
 
    var new_value = display_value + '' + current_value; //+''+ to make it string 
 
    document.getElementById('display').value = new_value; 
 
    }); 
 
}

尝试此并与上面相同的方法通过过滤“+”,添加例外和计算功能“ - ”,等等的价值。

+1

请注意,此事件处理程序仅绑定到* first *按钮。 – nnnnnn

+0

@nnnnnn:谢谢。编辑答案。 –

+1

但是......你的编辑与我所说的无关。另外,请注意'current_value'和'display_value'都将是字符串。 – nnnnnn

0

我觉得它更容易,如果你使用jQuery ..只是一个建议。

请看小提琴。

我添加了一个类“节目”,这是我们要显示的点击类“计算”的所有操作员的屏幕buttons..replaced显示器的javascript有以下的jQuery

var calculation=''; 
$('button.show').click(function(){ 
calculation = calculation.concat($(this).text()); 
$('#screen').text(calculation); 
}); 
上的所有按钮

而且还增加了脚本计算

请参阅小提琴Updated Fiddle