Раньше я спрашивал о той же теме, простой калькулятор, но поток теперь немного загроможден и больше не обновляется. Надеюсь, меня это раздражает, но я нахожу новую тему полезной.Простой калькулятор вычисляет неправильный
У меня есть упражнение JavaScript, которое нужно выполнить, чтобы сценарий калькулятора, который имеет почти ту же функциональность, что и встроенный Windows (7). Это означает, что у вас есть одно поле для ввода некоторых значений и небольшое значение, которое отображает ранее введенное значение плюс расчетную операцию.
Пользователь прислал мне код для моих потребностей, который мне понравился из-за его простоты, и я попытался его адаптировать.
В настоящее время я работаю, чтобы получить только одну операцию, чтобы работать, но позже будет три другие основные операции, квадратный корень, и т.д ..
Все работает просто отлично теперь, только, что вид тревожного, вычисляющего себя нет. Например: если вы введете 5 + 5 (или любое другое число), тогда щелкните по равным, ничего не произойдет. Если вы затем снова вводите любое число (нажмите «плюс» до), а затем нажмите «равно», это даст вам абсолютно случайный результат или результат вашего предыдущего расчета.
Это то, что я получил:
var number = 0; //the result
var operation = ' '; //the chosen calculating operation
var temp_Val = 0; //the last entered value (for the subdisplay)
var print_equal = function() {
var displayVal = document.getElementById("display");
displayVal.value = number;
};
var num_add = function() {
var displayVal = document.getElementById("display");
temp_Val = displayVal.value; //saves the value of the display (for the subdisplay)
console.log(temp_Val); //schreibt den Wert des Displays auf die Konsole
number += parseFloat(displayVal.value); //calculates the result
operation = '+'; //saves the used operation (for the subdisplay)
print_subdisplay(); //runs the function that's building the value of the subdisplay
displayVal.value = ""; //resets the main display
};
var print_subdisplay = function() {
var subdisplayVal = document.getElementById("subdisplay");
subdisplayVal.value = temp_Val + operation; //creates a String with both the first entered value and the operation
};
HTML:
<!-- Displays -->
<input type="text" name="display" id="display" value="0" class="display">
<input type="text" name="subdisplay" id="subdisplay" class="subdisplay" readonly>
<!-- Calculating operations -->
<input type="button" onclick="print_equal()" id="equal" value="=">
<input type="button" onclick="num_add()" id="plus" value="+">
<!-- Reset -->
<input type="button" value="C" onClick="reset()" class="reset">
Вот JSFiddle: http://jsfiddle.net/hJfFd/1/
я нашел бы это невероятно хорошо, если бы вы могли бы мне помочь, так как я Здесь я сижу, пытаясь заставить его работать с почти 4 часов (включая исследования). Заранее спасибо!
Я думаю, что вы ми ght быть запутанным в том, что должна делать ваша логика для каждой кнопки. Кнопка '=' должна добавлять все, что находится в левом поле, к тому, что находится в правильном поле. Ваш текущий код выполняет это добавление только при нажатии кнопки '+'. –
Вы правы, но я не хочу, чтобы правильное текстовое поле было доступно. Каждый пользовательский ввод должен быть выполнен в левом/первом поле. – xyxl
Поскольку это беспокоило меня, я добавил функцию автоматического возврата фокуса в поле ввода после нажатия на оператор. Надеюсь, вам понравится :) http://jsfiddle.net/CpvqR/22/ – rfoo