2016-07-05 144 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