С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 4

Калькулятор с ajax запросом

14.05.2015, 11:12. Показов 1245. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, всем привет, нужна помощь. Делаю калькулятор. При вводе 010/2 выводит результат 4, соответственно я так понял программа считает 010 в восьмеричной системе. Как сделать чтобы программа воспринимала 010 как 10. Подскажите пожалуйста как изменить код.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
var calculatorObject = {
    defaultValue: '0.00',
    operators: ['+', '-', '*', '/'],
    sequence: [],
    urlCalculate: 'calculate.php',
    isNumber: function (value) {
        return !isNaN(parseFloat(value));
    },
    calculate: function () {
        jQuery.post(calculatorObject.urlCalculate, { sequence: calculatorObject.sequence }, function (data) {
            if (!data.error) {
                $('#calculatorResult').html(data.result);
                calculatorObject.sequence = [];
            }
        }, 'json');
    },
    trigger: function (obj) {
        if (obj.length > 0) {
            obj.find('ul li').live('click', function () {
                $(this).siblings('li').removeClass('active'); // siblings - получаем все li
                $(this).addClass('active');
 
                var thisItem = $(this).attr('data-value');  // получаем значение атрибута           
                var thisValue = $('#calculatorResult').text();
 
                switch (thisItem) {
                    case '=':
                        calculatorObject.sequence.push(thisValue);
                        calculatorObject.calculate();
                        break;
 
                    case 'c':
                        calculatorObject.sequence = [];
                        $('#calculatorResult').html(calculatorObject.defaultValue);
                        break;
 
                    case calculatorObject.operators[0]:
                    case calculatorObject.operators[1]:
                    case calculatorObject.operators[2]:
                    case calculatorObject.operators[3]:
 
                        calculatorObject.sequence.push(thisValue);
 
                        if (calculatorObject.sequence.length > 0) {
                            //если последний элемент в массиве число то всё хорошо
                            // добавляем оператор в массив
                            if (calculatorObject.isNumber(calculatorObject.sequence[calculatorObject.sequence.length - 1])) {
                                calculatorObject.sequence.push(thisItem);
                                // в ином случае перезаписsdftv последний элемент
                            }
                            else {
                                calculatorObject.sequence[calculatorObject.sequence.length - 1] = thisItem;
                            }
                        }
 
 
                        //$('#calculatorResult').append(thisItem);
                        $('#calculatorResult').html(thisItem);
 
                        break;
 
                        default:
 
                        // если текущее значение не является оператором
                        if (jQuery.inArray(thisValue, calculatorObject.operators) === -1) {
                            if (thisValue !== calculatorObject.defaultValue) {
                                $('#calculatorResult').html(thisValue + thisItem);
                            }
                            else {
                                $('#calculatorResult').html(thisItem);
                            }
                        }
                        else {
                            $('#calculatorResult').html(thisItem);
                        }
                }
            });
        }
    }
};
$(function () {
    calculatorObject.trigger($('#calculator'));
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (isset($_POST['sequence'])) 
{
    $values = array_filter($_POST['sequence'], function($value) {
        return is_numeric($value) || in_array($value, array('+', '-', '/', '*'));
    });
    
    if (!empty($values)) 
    {       
        $calculation = 'return ('.implode($values).');';
        $value = eval($calculation);
        echo json_encode(array('result' => number_format($value, 2)));
    } 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2015, 11:12
Ответы с готовыми решениями:

Удаление сообщения из БД AJAX запросом
Есть таблица в которой циклом выводятся сообщения из БД. Каждое сообщение можно отметить checkbox-ом. Подскажите как написать AJAX функцию...

Настройка autocomplete c кроссдоменным ajax запросом
Пытаюсь настроить autocoplete c кроссдоменным ajax запросом. Запрос отправляется на другой домен, в ответ приходят данные в формате JSON...

Не выводит данные полученные ajax запросом
Есть простой код с помощью ajax посылаю запрос на сервер и он отсылает обратно обычную строку, и после получение результата хочу просто...

4
 Аватар для Svid_off
82 / 82 / 38
Регистрация: 15.03.2013
Сообщений: 280
14.05.2015, 11:25
JavaScript
1
parseInt("010", 10);
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 4
14.05.2015, 11:28  [ТС]
Svid_off, дело не в одном 010, он любую цифру начинающуюся с 0 воспринимает как восьмеричную систему
0
14.05.2015, 11:34

Не по теме:

Цитата Сообщение от Torkoal Посмотреть сообщение
дело не в одном 010
Конечно... вам Svid_off дал ответ. Значение radix - указывает систему счисления. Можете применять к любым числам.

0
 Аватар для Svid_off
82 / 82 / 38
Регистрация: 15.03.2013
Сообщений: 280
14.05.2015, 11:35
дело не в одном 010, он любую цифру начинающуюся с 0 воспринимает как восьмеричную систему
Я Вас прекрасно понял. Просто используйте метод parseInt со вторым параметром 10, для приведения пользовательского ввода к десятичной системе счисления.
То есть, то что ввел пользователь пропускайте через parseInt (x,10) где x - то, что ввел пользователь. Так понятно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2015, 11:35
Помогаю со студенческими работами здесь

Получить конкретную php-переменную ajax-запросом
Есть форма для отправки комментариев.. Обработчику отправляются post-данные. возникла необходимость получить их назад в обработанной форме...

Cделать отправку формы Ajax POST запросом.
• Необходимо сделать верстку формы «Form.png» в HTML. Страница html должна отображаться в кодировке UTF-8. Так же, необходимо отделить CSS...

AJAX запросом . по скайпу. . не понимаю почему не работает (
&lt;script type=&quot;text/javascript&quot;&gt; $(document). ready ( function () { var button = $ (&quot;button&quot;); button.click (function() { var text...

Как обработать несколько select одним запросом ajax?
Всем привет, имеется задача, нужно вывести предварительную сумму на основании 2х параметров. Параметры задаются в 2х или более...

Как отправить ajax запросом именно то id таблицы, по которому кликнул пользователь?
Здравствуйте, потребовалось по-быстрому сделать одну вещь читать мануалы времени нет. Как сделать следующее. Имеется строка таблицы html...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru