#javascript #html
Вопрос:
Я пытаюсь создать калькулятор на своем веб-сайте, поэтому я использую HTML и Javascript . Я добавил несколько кнопок, и когда я нажимаю, он меняет номер, и он не добавляет его после последнего элемента.
Вот как это выглядит :
Как вы можете видеть, он просто заменяет номер.
Вот мой код :
function onClick(num) {
document.getElementById('number').innerHTML = num;
}
<div>
<p>Enter number(s) :
<a id="number"></a>
</p>
<div>
<button type="button" onclick="onClick(7)">7</button>
<button type="button" onclick="onClick(8)">8</button>
<button type="button" onclick="onClick(9)">9</button>
</div>
<div>
<button type="button" onclick="onClick(4)">4</button>
<button type="button" onclick="onClick(5)">5</button>
<button type="button" onclick="onClick(6)">6</button>
</div>
<div>
<button type="button" onclick="onClick(1)">1</button>
<button type="button" onclick="onClick(2)">2</button>
<button type="button" onclick="onClick(3)">3</button>
</div>
<div>
<button type="button" onclick="onClick('=')">=</button>
<button type="button" onclick="onClick(0)">0</button>
<button type="button" onclick="onClick('.')">.</button>
</div>
</div>
О, и я не прошу никакого кода, я просто прошу небольшой подсказки о том, как делать то, что я хочу. И да, я искал в Интернете, но не нашел того, что хотел.
Спасибо!
Ответ №1:
Вы могли бы объединить innerHTML
с =
, чтобы он не перезаписывал существующий innerHTML
.
Рабочий пример:
function onClick(num) {
document.getElementById('number').innerHTML = num;
}
#calculator {
padding: 5px;
background-color: #549699;
}
<div id="calculator">
<p>Enter number(s) :
<a id="number"></a>
</p>
<div>
<button type="button" onclick="onClick(7)">7</button>
<button type="button" onclick="onClick(8)">8</button>
<button type="button" onclick="onClick(9)">9</button>
</div>
<div>
<button type="button" onclick="onClick(4)">4</button>
<button type="button" onclick="onClick(5)">5</button>
<button type="button" onclick="onClick(6)">6</button>
</div>
<div>
<button type="button" onclick="onClick(1)">1</button>
<button type="button" onclick="onClick(2)">2</button>
<button type="button" onclick="onClick(3)">3</button>
</div>
<div>
<button type="button" onclick="onClick('=')">=</button>
<button type="button" onclick="onClick(0)">0</button>
<button type="button" onclick="onClick('.')">.</button>
</div>
</div>
Базовый калькулятор:
С window[operation]()
помощью вы можете вызвать функцию с operation
именем функции as. Например window['multiply']()
, это то же самое, что multiply()
.
const output = document.getElementById('number');
let operation = '';
let temp_result = 0;
function onClick(num) {
output.innerHTML = num;
}
function divide(a, b) {
return a / b;
}
function multiply(a, b) {
return a * b;
}
function subtract(a, b) {
return a - b;
}
function addNumber(a, b) {
return a b;
}
function chooseOperation(choice) {
operation = choice;
temp_result = parseFloat(output.innerHTML);
output.innerHTML = '';
}
function startCalculation() {
if (operation != '') {
let operator = parseFloat(output.innerHTML)
output.innerHTML = window[operation](temp_result, operator);
}
operation = '';
}
#calculator {
padding: 5px;
background-color: #549699;
}
button {
width: 20px;
height: 20px;
margin: 2px 0;
}
<div id="calculator">
<p>Enter number(s) :
<a id="number"></a>
</p>
<div>
<button type="button" onclick="onClick(7)">7</button>
<button type="button" onclick="onClick(8)">8</button>
<button type="button" onclick="onClick(9)">9</button>
<button type="button" onclick="chooseOperation('divide')">/</button>
</div>
<div>
<button type="button" onclick="onClick(4)">4</button>
<button type="button" onclick="onClick(5)">5</button>
<button type="button" onclick="onClick(6)">6</button>
<button type="button" onclick="chooseOperation('multiply')">*</button>
</div>
<div>
<button type="button" onclick="onClick(1)">1</button>
<button type="button" onclick="onClick(2)">2</button>
<button type="button" onclick="onClick(3)">3</button>
<button type="button" onclick="chooseOperation('subtract')">-</button>
</div>
<div>
<button type="button" onclick="startCalculation()">=</button>
<button type="button" onclick="onClick(0)">0</button>
<button type="button" onclick="onClick('.')">.</button>
<button type="button" onclick="chooseOperation('addNumber')"> </button>
</div>
</div>
Расширенный калькулятор:
const output = document.getElementById('number');
let operation = '';
let temp_result = 0;
function addChar(num) {
if (output.innerHTML == 0) {
output.innerHTML = num;
}
else {
output.innerHTML = num;
}
}
function divide(a, b) {
return a / b;
}
function multiply(a, b) {
return a * b;
}
function subtract(a, b) {
return a - b;
}
function addNumber(a, b) {
return a b;
}
function calculate() {
if (operation != '') {
let operator = parseFloat(output.innerHTML)
output.innerHTML = window[operation](temp_result, operator);
}
}
function chooseOperation(choice) {
calculate();
operation = choice;
temp_result = parseFloat(output.innerHTML);
output.innerHTML = 0;
}
function startCalculation() {
calculate();
operation = '';
}
function reset() {
output.innerHTML = 0;
operation = '';
}
#calculator {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
width: 95px;
padding: 3px;
border: 1px solid #aaa;
background-color: #549699;
}
#number {
width: 96%;
height: 20px;
margin: 5px 0;
border: 1px solid #aaa;
text-align: end;
overflow: hidden;
background-color: #fff;
}
button {
width: 20px;
height: 20px;
margin: 2px 0;
}
#reset {
width: 96%;
}
#reset button {
width: 100%;
}
<div id="calculator">
<span id="number">0</span>
<div>
<button type="button" onclick="addChar('7')">7</button>
<button type="button" onclick="addChar('8')">8</button>
<button type="button" onclick="addChar('9')">9</button>
<button type="button" onclick="chooseOperation('divide')">/</button>
</div>
<div>
<button type="button" onclick="addChar('4')">4</button>
<button type="button" onclick="addChar('5')">5</button>
<button type="button" onclick="addChar('6')">6</button>
<button type="button" onclick="chooseOperation('multiply')">*</button>
</div>
<div>
<button type="button" onclick="addChar('1')">1</button>
<button type="button" onclick="addChar('2')">2</button>
<button type="button" onclick="addChar('3')">3</button>
<button type="button" onclick="chooseOperation('subtract')">-</button>
</div>
<div>
<button type="button" onclick="startCalculation()">=</button>
<button type="button" onclick="addChar('0')">0</button>
<button type="button" onclick="addChar('.')">.</button>
<button type="button" onclick="chooseOperation('addNumber')"> </button>
</div>
<div id="reset">
<button type="button" onclick="reset()">Reset</button>
</div>
</div>
Комментарии:
1. чтобы сделать его расчетным, вы можете сделать
document.getElementById('number').innerHTML = Number(document.getElementById('number').innerHTML) num;
2. он не добавляет его после последнего элемента -> он хочет написать число с более чем одной цифрой — пока ничего о вычислениях…
3. спасибо большое за ваши ответы !
4. @SirTristanus Я добавил пример с расчетом. Пожалуйста, оставьте отзыв…
5. это не то, что я собирался сделать, но это выглядит интересно, тай, за твою помощь
Ответ №2:
Он просто заменяет текущее значение innerHTML значением, которое вы нажали. Вы должны сохранить текущее значение document.getElementById('number').innerHTML
в другой переменной и добавить свое новое num
значение в эту переменную. Затем вы можете установить сумму в качестве нового значения innerHTML.
Ответ №3:
<script>
//function for displaying values
function dis(val)
{
document.getElementById("edu").value =val
}
//function for evaluation
function solve()
{
let x = document.getElementById("edu").value
let y = eval(x)
document.getElementById("edu").value = y
}
//function for clearing the display
function clr()
{
document.getElementById("edu").value = ""
}
</script>
<div class="title">Made by Yasin</div>
<table border="1">
<tbody><tr>
<td><input type="button" value="c" onclick="clr()"> </td>
<td colspan="3"><input type="text" id="edu"></td>
<!-- clr() function will call clr to clear all value -->
</tr>
<tr>
<!-- creating buttons and assigning values-->
<td><input type="button" value=" " onclick="dis(' ')"> </td>
<td><input type="button" value="1" onclick="dis('1')"> </td>
<td><input type="button" value="2" onclick="dis('2')"> </td>
<td><input type="button" value="3" onclick="dis('3')"> </td>
</tr>
<tr>
<td><input type="button" value="-" onclick="dis('-')"> </td>
<td><input type="button" value="4" onclick="dis('4')"> </td>
<td><input type="button" value="5" onclick="dis('5')"> </td>
<td><input type="button" value="6" onclick="dis('6')"> </td>
</tr>
<tr>
<td><input type="button" value="*" onclick="dis('*')"> </td>
<td><input type="button" value="7" onclick="dis('7')"> </td>
<td><input type="button" value="8" onclick="dis('8')"> </td>
<td><input type="button" value="9" onclick="dis('9')"> </td>
</tr>
<tr>
<td><input type="button" value="/" onclick="dis('/')"> </td>
<td><input type="button" value="." onclick="dis('.')"> </td>
<td><input type="button" value="0" onclick="dis('0')"> </td>
<!-- Evaluating function call eval()-->
<td><input type="button" value="=" onclick="solve()"> </td>
</tr>
</tbody></table>
<!-- for styling -->
<style>
.title{
border-radius: 20px;
margin-bottom: 20px;
text-align:center;
width: 210px;
color:#ff4456;
border: solid black 1px;
}
input[type="button"]
{
border-radius: 10px;
background-color:#ff4456;
color: black;
border-color:#ff4456 ;
width:100%;
}
input[type="text"]
{
border-radius: 10px;
text-align: right;
background-color:white;
border-color: black ;
width:100%
}
</style>