2016-07-05 202 views
-1

我是初學者,我正在嘗試我的第一個真正的項目,製作計算器。我有一個模板HTML和CSS,我想通過只編輯JavaScript來使它工作。如果有人能指引我朝着正確的方向發展,我會陷入一個開始,並會感到沮喪。Javascript計算器

這裏有一個類似以前問的問題(我想我應該包括這個問問題時):Dynamical Calculator Javascript

這裏是我的腳本至今:https://jsfiddle.net/andthatch/an73my86/#&togetherjs=4goj5AV6Qk

工作現在:)謝謝你們。如果再次卡住,我會停下來。

var divElement = document.getElementById("calculator"); 
var keys = divElement.getElementsByTagName("span"); 
var input = document.getElementsByClassName('screen'); 
var decimalAdded = false; 

    for (var i = 0; i < keys.length; i++) { 
    keys[i].addEventListener('click', function(e) { 

     var inputVal = input[0].innerHTML; 
     var buttonVal = this.innerHTML; 

     if(buttonVal === 'C') { 
      input[0].innerHTML = ''; 
      decimalAdded = false; 
     } 
     else{ 
      input[0].innerHTML+=buttonVal; 
     } 

    }); 
} 
+3

'getElementsByClassName'返回一個HTML集合,你把它作爲一個單一的元素。開發人員工具是你的朋友。 – epascarello

+0

我想這個問題是你得到了一個'input'的列表,但是期待一個單一的元素。 – nrabinowitz

+0

鏈接到小提琴讓大家有一個更容易的時間看看它: https://jsfiddle.net/efc3hbt8/ –

回答

0

你在你的腳本file.input一些失誤是元素的集合,因爲它是通過getElementsByClassName獲得的。所以,你必須指定類下的「屏幕」的唯一元素的索引作爲其返回一個數組。還使用addEventListener而不是使用的「onClick」財產上的對象

var divElement = document.getElementById("calculator"); 
var keys = divElement.getElementsByTagName("span"); 
var input = divElement.getElementsByClassName("screen"); 
var decimalAdded = false; 

for (var i = 0; i < keys.length; i++) { 
    keys[i].addEventListener('click', function(e) { 

     var inputVal = input[0].innerHTML; 
     var buttonVal = this.innerHTML; 

     if(buttonVal === 'C') { 
      input[0].innerHTML = ''; 
      decimalAdded = false; 
     }else{ 
      input[0].innerHTML+=buttonVal; 
     } 

    }); 
} 
+0

好吧我試圖運行,現在仍然沒有運氣。這裏是我現在有:https://jsfiddle.net/efc3hbt8/6/ – andthatch

+0

我ckecked你的jsfiddel.in你的小提琴你寫var varElement = divElement.getElementsByClassName.should是var input = document.getElementsByClassName('screen'); –

+0

非常感謝您的幫助。謝謝。 – andthatch