Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Калькулятор (советы) (https://javascript.ru/forum/events/64565-kalkulyator-sovety.html)

moslem 21.08.2016 14:30

Калькулятор (советы)
 
Сделал вот такой простой калькулятор, для того чтобы хоть как-то закрепить полученные знания, хотел бы от опытных программистов услышать советы, где и какой код лучше было бы написать другим образом и только что заметил что в mozilla firefox этот калькулятор почему-то не работает.

https://jsbin.com/vamawo/edit?html,css,js,output

рони 21.08.2016 14:42

moslem,
calcBtn это не массив

рони 21.08.2016 14:45

moslem,
вот так будет массив
var calcBtn = [].slice.call(document.querySelectorAll('#calc .calc-btn'),0);

moslem 21.08.2016 14:54

Цитата:

Сообщение от рони (Сообщение 426251)
moslem,
calcBtn это не массив

сейчас через цикл сделал, везде работает.

Я изначально пытался выбрать элемент через getElementsByClassName

var calcBtn = document.getElementsByClassName('.calc-btn')[0];

calcBtn.addEventListener('click', function(e){
   console.log(e.target);
});


у меня только первый элемент выбирала, а остальные не работали, по какой причине это может быть?

рони 21.08.2016 15:20

Цитата:

Сообщение от moslem
[0];

если выбрали только первый, откуда другие появятся?

рони 21.08.2016 15:22

Цитата:

Сообщение от moslem
сейчас через цикл сделал

достаточно было заменить 1 строку - см. пост 3

рони 21.08.2016 15:25

moslem,
getElementsByClassName - живой список
document.querySelectorAll('#calc .calc-btn') - список на момент поиска. оба не массивы и методов массивов не имеют.
коллекции-не-массивы

Strongman 21.08.2016 15:40

Ну так в принципе ничего, нашел следующие замечания:
1) Хотелось бы видеть 0 когда все сбрасываешь;
2) Хотелось бы видеть число с правой стороны;
3) Цвета хотелось бы видеть бело-синие, мне они больше нравятся, чем блевотно-зеленые.
4) Хотелось бы видеть кнопку BackSpace - удаление одной циферки.

Rise 21.08.2016 17:30

moslem, избавься от цикла...

moslem 21.08.2016 17:32

рони, я заменил на тот код который в посте 3, спасибо.

Strongman,
я кстати хотел сделать когда сбрасываешь, чтоб цифра 0 была, но когда человек обратно начинает вводить, этот ноль впереди стоит.

laimas 21.08.2016 18:22

Цитата:

Сообщение от moslem
когда человек обратно начинает вводить, этот ноль впереди стоит

Удаляйте его - введенное_значение=введенн ое_значение.replace(/^0(?!\.|,)/, ''), оставив в коде вместо \.|, значение для десятичного ввода - (?!\.) или (?!,).

Вообще-то ноль слева незначащий, на расчет не повлияет.


Часовой пояс GMT +3, время: 00:10.