2017-04-07 71 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