Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2016, 14:30
Аватар для moslem
Аспирант
Отправить личное сообщение для moslem Посмотреть профиль Найти все сообщения от moslem
 
Регистрация: 22.07.2013
Сообщений: 30

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

https://jsbin.com/vamawo/edit?html,css,js,output
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2016, 14:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

moslem,
calcBtn это не массив
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2016, 14:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

moslem,
вот так будет массив
var calcBtn = [].slice.call(document.querySelectorAll('#calc .calc-btn'),0);
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2016, 14:54
Аватар для moslem
Аспирант
Отправить личное сообщение для moslem Посмотреть профиль Найти все сообщения от moslem
 
Регистрация: 22.07.2013
Сообщений: 30

Сообщение от рони Посмотреть сообщение
moslem,
calcBtn это не массив
сейчас через цикл сделал, везде работает.

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

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

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


у меня только первый элемент выбирала, а остальные не работали, по какой причине это может быть?
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2016, 15:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от moslem
[0];
если выбрали только первый, откуда другие появятся?
Ответить с цитированием
  #6 (permalink)  
Старый 21.08.2016, 15:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от moslem
сейчас через цикл сделал
достаточно было заменить 1 строку - см. пост 3
Ответить с цитированием
  #7 (permalink)  
Старый 21.08.2016, 15:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

moslem,
getElementsByClassName - живой список
document.querySelectorAll('#calc .calc-btn') - список на момент поиска. оба не массивы и методов массивов не имеют.
коллекции-не-массивы
Ответить с цитированием
  #8 (permalink)  
Старый 21.08.2016, 15:40
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

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

Последний раз редактировалось Strongman, 21.08.2016 в 15:44.
Ответить с цитированием
  #9 (permalink)  
Старый 21.08.2016, 17:32
Аватар для moslem
Аспирант
Отправить личное сообщение для moslem Посмотреть профиль Найти все сообщения от moslem
 
Регистрация: 22.07.2013
Сообщений: 30

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

Strongman,
я кстати хотел сделать когда сбрасываешь, чтоб цифра 0 была, но когда человек обратно начинает вводить, этот ноль впереди стоит.
Ответить с цитированием
  #10 (permalink)  
Старый 21.08.2016, 18:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать калькулятор цены. core Работа 2 09.09.2015 14:28
Калькулятор услуг tarantino Javascript под браузер 1 30.07.2015 00:21
Не работает Калькулятор просчета отопления igor700 Общие вопросы Javascript 5 26.02.2014 16:18
Онлайн калькулятор с ajax Belkazavr AJAX и COMET 2 07.11.2013 23:58
Сделать калькулятор на сайт. asderru Работа 1 22.07.2010 13:46