Не получается вывести число в input JQuery
Необходимо написать калькулятор. Все вроде получилось, но вот с кнопкой M много вопросов. Если поле памяти пусто, нужно вывести в него результат, а если не пусто, то прибавить к нему полученный результат. Много что попробовал, но выводит либо NaN, либо object htmlinputelement . Уже долго не могу понять, где ошибка.
Помогите, пожалуйста, разобраться.
<!DOCTYPE html>
<head>
<title>Страница</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="/../js/calculator.js"></script>
</head>
<body>
<form id="calc">
<label>Первое число:</label><input type="text" name="first" />
<label>Второе число:</label><input type="text" name="second" />
<input type="button" name="plus" value="+" />
<input type="button" name="minus" value="-" />
<input type="button" name="div" value="/" />
<input type="button" name="umn" value="*" />
<input type="button" name="pow" value="x^Y" />
<input type="button" name="mry" value="M" />
<input type="button" name="clean" value="C" />
<label>Результат:</label><input readonly type="text" name="result" id="result" placeholder="Ответ" />
<label>Память:</label><input readonly type="number" id="mem" name="mem" placeholder="Память" />
</form>
</body>
<style>
input {
outline: none;
}
div {
margin: 10px 0;
text-align: center;
}
div label {
margin: 0 10px 0 0;
}
div input[type=text] {
padding: 6px 10px;
border-radius: 10px;
border: 1px solid #000033;
}
div input[type=button] {
padding: 6px 10px;
border-radius: 10px;
font-size: 16px;
border: 1px solid #000033;
cursor: pointer;
}
</style>
<script>
var output;
var NewRes;
$("input[name=plus]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
result = +first + second;
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=minus]").click(function() { // Событие нажатия на кнопку "Расчёт"
var action = $("select[name=action]").val(); // Получаем значение действия, которое нужно выполнить
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = Number(first) - Number(second);
NewRes = result;
output = $("input[name=result]").val(result);
window.alert(result);
});
$("input[name=div]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = first / second;
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=pow]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = +Math.pow(first, second);
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=umn]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = first * second;
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=mry]").click(function() {
if (("input[name=umn]").click) // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result = 0; // Переменная результата
var output;
result = parseInt(first * second);
window.alert(result);
$("input[name=clean]").click(function() {
$('#calc')[0].reset();
});
});
</script>
</html>
Ответы (1 шт):
Автор решения: Aleksandr Belous
→ Ссылка
- Конструкция
if (("input[name=umn]").click)лишняя и не несет никакого смысла, она ничего не делает - неправильный синтаксис. Вам нужно изучить конструкцию if/else - Как я понял, задача кнопки M выполнять функцию кнопки M+ как на обычном калькуляторе, т.е. записывать в память результаты операций по нажатию + если ранее уже был записан какой-то результат, то вывести сумму прошлого сохраненного значения и нового результата.
Для этого, подготовим отдельную переменную
memoryс значением0, в которую мы будем записывать результаты и которая будет выводиться в поле "Память". Нулевое значение нам нужно, чтобы избежать ошибок при дальнейшем сложении. Далее в обработчике событияinput[name=mry]проверяем, есть ли в переменнойNewResзначение выполненной операции. Если она равнаundefined, то пользователь не произвел каких операций, значит нам нечего записывать в память. Об этом сообщаем пользователю черезalert. Иначе прибавляем в переменнуюmemoryрезультат операцииNewResи выводим в полеinput[name=mem]через методval. Если в этот метод передать значение, то он запишет его в поле.valueэлемента, если ничего не передать - выведет текущее значение этого поля. Для понимания,valueв инпутах - это введенный вами текст. Далее у вас небольшая опечатка, выносим обработчикinput[name=clean]наружу из текущего обработчика. Иначе, он бы добавлялся каждый раз, как только вы нажимали на кнопкуM+ при запуске приложения обработчик бы не добавлялся (только после первого нажатия наМон бы начинал работать). Внутри обработчика функция очищает все поля формы, но также нам нужно сбросить данные, которые мы записывали внутри логики. Сбрасываем все переменные.
var output;
var NewRes;
var memory = 0;
$("input[name=plus]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
result = +first + second;
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=minus]").click(function() { // Событие нажатия на кнопку "Расчёт"
var action = $("select[name=action]").val(); // Получаем значение действия, которое нужно выполнить
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = Number(first) - Number(second);
NewRes = result;
output = $("input[name=result]").val(result);
window.alert(result);
});
$("input[name=div]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = first / second;
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=pow]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = +Math.pow(first, second);
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=umn]").click(function() { // Событие нажатия на кнопку "Расчёт"
var first = $("input[name=first]").val() * 1; // Переменная первого числа
var second = $("input[name=second]").val() * 1; // Переменная второго числа
var result; // Переменная результата
var output;
result = first * second;
NewRes = result;
output = $("input[name=result]").val(result);
});
$("input[name=mry]").click(function() {
if (NewRes === undefined) {
window.alert('Выполните операцию');
} else {
memory += NewRes;
window.alert(NewRes);
$("input[name=mem]").val(memory);
}
});
$("input[name=clean]").click(function() {
NewRes = undefined;
memory = 0;
$('#calc')[0].reset();
});
input {
outline: none;
}
div {
margin: 10px 0;
text-align: center;
}
div label {
margin: 0 10px 0 0;
}
div input[type=text] {
padding: 6px 10px;
border-radius: 10px;
border: 1px solid #000033;
}
div input[type=button] {
padding: 6px 10px;
border-radius: 10px;
font-size: 16px;
border: 1px solid #000033;
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="calc">
<label>Первое число:</label><input type="text" name="first" />
<label>Второе число:</label><input type="text" name="second" />
<input type="button" name="plus" value="+" />
<input type="button" name="minus" value="-" />
<input type="button" name="div" value="/" />
<input type="button" name="umn" value="*" />
<input type="button" name="pow" value="x^Y" />
<input type="button" name="mry" value="M" />
<input type="button" name="clean" value="C" />
<label>Результат:</label><input readonly type="text" name="result" id="result" placeholder="Ответ" />
<label>Память:</label><input readonly type="number" id="mem" name="mem" placeholder="Память" />
</form>