![](/img/trans.png)
[英]How can I get add and subtract functions in javascript calculator to work correctly?
[英]How can I get this Javascript calculator to work?
我做了一個簡單的計算器,但它不起作用。 我怎樣才能讓它工作?
$(function() { var firstNumber = $('#firstNumber') var operation = $('#operation') var secondNumber = $('#secondNumber') var calculate = $('button') calculate.click(getResult) function getResult(firstNumber, operation, secondNumber) { if (operation === '+') { var result = firstNumber.val() + secondNumber.val() } else if (operation === '-') { var result = firstNumber.val() - secondNumber.val() } else if (operation === '*') { var result = firstNumber.val() * secondNumber.val() } else { var result = firstNumber.val() / secondNumber.val() } } $('#result').text(result) })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type='text' id='firstNumber' placeholder='Enter a number'> <input type='text' id='operation' placeholder='Enter an operation'> <input type='text' id='secondNumer' placeholder='Enter another number'> <br> <button>Calculate</button> <br> <p>The result is <span id='result'></span></p>
這是工作版本
function getResult() { var result, firstNumber = +$('#firstNumber').val(), // casting value to number secondNumber = +$('#secondNumber').val(), operation = $('#operation').val(); console.log(firstNumber,operation,secondNumber) if (operation === '+') { result = firstNumber + secondNumber; } else if (operation === '-') { result = firstNumber - secondNumber; } else if (operation === '*') { result = firstNumber * secondNumber; } else if (operation === '/') { result = (secondNumber === 0) ? "Cannot divide by 0": (firstNumber / secondNumber); } else result = "Only use +,-,* or /"; $('#resultSpan').text(result) } // onload does not have to have every line of the script in it $(function() { $('button').click(getResult) })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type='text' id='firstNumber' placeholder='Enter a number'> <input type='text' id='operation' placeholder='Enter an operation'> <input type='text' id='secondNumber' placeholder='Enter another number'> <br> <button type="button">Calculate</button> <br> <p>The result is <span id='resultSpan'></span></p>
幾個問題:
firstNumber
、 operator
和secondNumber
作為參數傳遞給getResult
函數。 忽略這些參數——您已經將適當的 DOM 元素分配給具有這些名稱的變量。getResult
內部。secondNumber
的 HTML id
屬性中存在拼寫錯誤(缺少b
)val()
返回一個字符串,因此當您執行+
,它將連接這兩個輸入字符串。 要獲得算術加法,首先將這些字符串轉換為數字,例如使用一元+
operation
永遠不會+
, -
,... 它是input
元素,因此您必須采用它的.val()
。這是您的腳本的更正版本:
$(function() { var firstNumber = $('#firstNumber') var operation = $('#operation') var secondNumber = $('#secondNumber') var calculate = $('button') calculate.click(getResult) function getResult() { var result var op = operation.val() if (op === '+') { result = +firstNumber.val() + +secondNumber.val() } else if (op === '-') { result = firstNumber.val() - secondNumber.val() } else if (op === '*') { result = firstNumber.val() * secondNumber.val() } else { result = firstNumber.val() / secondNumber.val() } $('#result').text(result) } })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type='text' id='firstNumber' placeholder='Enter a number'> <input type='text' id='operation' placeholder='Enter an operation'> <input type='text' id='secondNumber' placeholder='Enter another number'> <br> <button>Calculate</button> <br> <p>The result is <span id='result'></span></p>
你的secondNumber
div 有一個錯字。 我認為您正在嘗試使用IIFE
但由於代碼在文檔加載時執行,您的主要變量是undefined
。 在此示例中,我使用click()
處理程序並在調用時將值分配給變量(假設您在輸入中輸入了值)。
要執行數學運算,您需要從輸入中解析數值,否則您的代碼只會連接這些值而不計算它們。 根據所需的值類型,您可以將parseFloat()
用於十進制值或parseInt()
用於整數。
下面的代碼在我的筆中工作:
$('#calculate').click( function() {
var result;
var operation = $('#operation').val()
var firstNumber = parseFloat($('#firstNumber').val())
var secondNumber = parseFloat($('#secondNumber').val())
if (operation === '+') {
result = firstNumber + secondNumber
} else if (operation === '-') {
result = firstNumber - secondNumber
} else if (operation === '*') {
result = firstNumber * secondNumber
} else {
result = firstNumber / secondNumber
}
$('#result').text(result.toFixed(2))
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.