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

i ckecked your jsfiddel.in на вашей скрипке вы написали var screenElement = divElement.getElementsByClassName.should be var input = document.getElementsByClassName ('screen'); –

+0

Очень ценю вашу помощь. Благодарю. – andthatch

Смежные вопросы